array_key_exists在2D数组php中

时间:2011-01-19 14:37:05

标签: php arrays multidimensional-array simplexml

这是一个复杂的问题......:

EDIT !!

我试过了......:

但它不起作用......:

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

这里是xmlobject:

 [MeshHeadingList] => SimpleXMLElement Object
                            (
                                [MeshHeading] => Array
                                    (
                                        [0] => SimpleXMLElement Object
                                            (
                                                [DescriptorName] => Acoustic Stimulation
                                                [QualifierName] => methods
                                            )

                                        [1] => SimpleXMLElement Object
                                            (
                                                [DescriptorName] => Adult
                                            )

                                        [2] => SimpleXMLElement Object
                                            (
                                                [DescriptorName] => Auditory Perception
                                                [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
                                                    )

                                            )

我想在以下数组中输出它:

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)

说明:如果存在Discriptor名称,则它会添加一个值,如果QualifierName存在于同一个DiscriptorName中,它也会向QualifierName添加一个值......

正如您所看到的,必须在第一个“array_key_exists”中检查它,然后在数组中的数组中检查......?

我使用的是一维数组,但这种方法更复杂...... ??

此致 泰斯

1 个答案:

答案 0 :(得分:3)

您可以使用isset

if (isset($stat[$descriptorName][$qualifierName]))