2011-01-19 125 views
3

这是一个复杂的问题...:array_key_exists在二维数组php

编辑!

我想这...:

但它不工作...:

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) 

Exp lantion:如果Discriptor名称存在,它增加了一个值,如果QualifierName在同一DiscriptorName存在它增加了一个价值的QualifierName太...

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

我得到了一维数组,但这是更复杂的方式......?

问候, 泰斯

+0

你可以发布你的代码,你已经尝试过吗? – 2011-01-19 14:49:34

回答

3

你可以只使用isset

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

你能解释一下吗? – Thijs 2011-01-19 15:11:18