array_key_exists in 2D array php
It's a complex question...:
EDIT!!
I tried this...:
But it doesn't work...:
if ($citation->MeshHeadingList)
{//b
foreach ($citation->MeshHeadingList->MeshHeading as $mesh_heading)
{//c
$mesh_tag = $mesh_heading->DescriptorName;
//If Qualifier name excists:
if (isset($mesh_heading->QualifierName))
{//d
if (!array_key_exists($mesh_tag, $mesh_tags_array))
{//e
$mesh_tags_array[$mesh_tag][] = 0;
foreach ($mesh_heading->QualifierName as $qualifier_name)
{//f
if (!array_key_exists($qualifier_name, $mesh_tags_array)
{//g
$mesh_tags_array[][$qualifiername] = 0;
}//g
else
{//g
$mesh_tags_array[][$qualifiername] += 1;
}//g
}//f
if ($mesh_heading->DescriptorName->attributes() == "Y")
{//f
$major = 3;
}//f
else
{//f
$major = 0;
}//f
$mesh_tags_array[$mesh_tag][] += $position_rank + $date_rank + $major;
}//e
else
{//e
if ($mesh_heading->DescriptorName->attributes() == "Y")
{//f
$major = 3;
}//f
else
{//f
$major = 0;
}//f
if (!array_key_exists($mesh_tag, $mesh_tags_array))
{//f
$mesh_tags_array[$mesh_tag][] = 0;
}//f
else
{//f
$mesh_tags_array[$mesh_tag][] += $position_rank + $date_rank + $major;
}//f
}//e
}//d
}//c
}//b
else
{//b
echo "mesheading is missing in article " . $i . "<br />";
}//b
And here the xmlobject:
[MeshHeadingList] => SimpleXMLElement Object
(
[MeshHeading] => Array
(
[0] => SimpleXMLElement Object
(
[DescriptorName] => Acoustic Stimulation
[QualifierName] => methods
)
[1] => SimpleXMLElement Object
(
[DescriptorName] => Adult
)
[2] => SimpleXMLElement Object
(
[DescriptorName] => Auditory Perc开发者_JS百科eption
[QualifierName] => physiology
)
[3] => SimpleXMLElement Object
(
[DescriptorName] => Electroencephalography
[QualifierName] => methods
)
[4] => SimpleXMLElement Object
(
[DescriptorName] => Event-Related Potentials, P300
[QualifierName] => Array
(
[0] => genetics
[1] => physiology
)
)
[5] => SimpleXMLElement Object
(
[DescriptorName] => Schizotypal Personality Disorder
[QualifierName] => Array
(
[0] => diagnosis
[1] => genetics
[2] => psychology
[3] => clinical physiology
)
)
[MeshHeading] => Array
(
[0] => SimpleXMLElement Object
(
[DescriptorName] => Adolescent
)
[1] => SimpleXMLElement Object
(
[DescriptorName] => Event-Related Potentials, P300
[QualifierName] => Array
(
[0] => genetics
[1] => physiology
[2] => methods
)
)
[2] => SimpleXMLElement Object
(
[DescriptorName] => Attention
)
[3] => SimpleXMLElement Object
(
[DescriptorName] => Female
)
[4] => SimpleXMLElement Object
(
[DescriptorName] => Genetic Predisposition to Disease
[QualifierName] => Array
(
[0] => genetics
[1] => psychology
)
)
[5] => SimpleXMLElement Object
(
[DescriptorName] => Schizotypal Personality Disorder
[QualifierName] => Array
(
[0] => diagnosis
[1] => genetics
[2] => psychology
)
)
i want to output it in the following array:
Acoustic Stimulation (1)
-methods (1)
Adult (1)
Auditory Perception (1)
-physiology (1)
Electroencephalography (1)
-methods (1)
Event-Related Potentials, P300 (2)
-genetics (2)
-physiology (2)
-methods (1)
Schizotypal Personality Disorder (2)
-diagnosis (2)
-genetics (2)
-psychology (2)
-clinical physiology (1)
Adolescent (1)
Attention (1)
Female (1)
Genetic Predisposition to Disease (1)
-genetics (1)
-psychology (1)
Explantion: If the Discriptor name exists, it adds a value of one, if the QualifierName exists in the same DiscriptorName it adds a value to the QualifierName too...
As you can see, it must be checked in the first "array_key_exists" and later in the array in the array...?
I got working with a one dimensional array but this is way more complex...??
Regards, Thijs
You can just use isset
.
if (isset($stat[$descriptorName][$qualifierName]))
精彩评论