2010-03-23 26 views
2

也许有人可以帮我这一个:查找阵列/ PHP母公司的关键

我使用了一个基本的搜索功能查找内的阵列深的数组。问题是,一旦找到该数组,我还想返回它的父键。 有没有可以确定数组的父键的PHP函数?

下面是一个搜索功能的例子...理想情况下,我想返回找到的数组以及它的父键。

function search($array, $key, $value){ 
    $results = array(); 

    if (is_array($array)){ 
     if ($array[$key] == $value){ 
      $results[] = $array; 
     } 
     foreach ($array as $subarray){ 
      $results = array_merge($results, search($subarray, $key, $value)); 
     } 
    } 

    return $results; 
} 

下面是一个例子,以更好地说明我的意思: 这里是我想寻找一个数组的例子:

Array 
(
    [categories] => Array 
     (
      [1] => Array 
       (
        [data] => 
        [id] => d 
        [name] => Bracelets 
        [products] => Array 
         (
          [0] => Array 
           (
            [id] => j 
            [name] => Red 
            [data] => 
           ) 

          [1] => Array 
           (
            [id] => gi 
            [name] => Torqoise 
            [data] => 
           ) 

         ) 

       ) 

如果我寻找的东西用“ ‘j’的ID”,我会得到这个数组作为结果:

Array 
(
    [0] => Array 
     (
      [id] => j 
      [name] => Red 
      [data] => 
     ) 

) 

现在,理想情况下我也想知道这个A的父键在示例中为'产品',在返回结果之前显然需要检索...

回答

0

您可以使用array_flip()来交换键和值,以便您可以使用值检索键。

你也可以稍微修改您的foreach为类似

foreach ($array as $subarray_key => $subarray){ 
    $results = array_merge($results, search($subarray, $key, $value)); 
} 

和$ subarray_key是取胜的关键。

1

不,没有内置函数。您可以在函数params中传递父键

+0

@Jordan那是怎么回事?只需使用foreach的扩展语法,就可以拥有它 – 2010-03-23 12:32:20