2012-06-14 58 views
0

跟进这个question,我有进一步的问题 - 我有两个相同的子键,但他们有阵列的不同组合在他们variant键,例如,找到多嵌套数组中相同键之间的匹配?

Array 
(
    [1] => Array 
     (
      [b] => Array 
       (
        [quantity_request] => 1 
        [time_created] => 1339688613 
        [variant] => Array 
         (
         [0] => x 
         [1] => y 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [b] => Array 
       (
        [quantity_request] => 1 
        [time_created] => 1339688631 
        [variant] => Array 
         (
         [0] => x 
         [1] => z 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [c] => Array 
       (
        [quantity_request] => 1 
        [time_created] => 1339688959 
        [variant] => Array 
         (
         ) 

       ) 

     ) 

) 

这样,我怎么能找到匹配这一项目,

[b] => Array 
         (
          [quantity_request] => 1 
          [time_created] => 1339688631 
          [variant] => Array 
           (
           [0] => x 
           [1] => z 
           ) 

         ) 

    function get_letter($letter,$array) 
     { 
      foreach($this->content as $k => $v) 
      { 
       if(array_key_exists($letter, $v)) 
       { 
        return $k; 

       } 
      } 
      return false; 

     } 

list($key,$different) = get_letter('b',array("x","z")); // return 1 

我想要的结果是这样,如果有匹配,

2 

任何想法?

+0

你能解释一下你的问题吗?为什么结果应该是'2,0'? –

+0

我想找到实际上最高级别为'2'的关键(我编辑了我的问题)。 – laukok

回答

0

你只需要添加:

if ($v['variant'] == $array) 

if语句中的variant阵列与一个作为参数传递比较。

function get_letter($letter, $array) 
{ 
    foreach($this->content as $k => $v) 
    { 
      if(array_key_exists($letter, $v)) 
      { 
       if ($v['variant'] == $array) 
        return $k; 
      } 
    } 

    return false; 
}