2010-03-23 25 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