2011-05-02 63 views
3

我有n×n的數組,遞歸我試圖讓基於特定值以下幾點:PHP遞歸解析陣列 - 尋找價值

我想搜索特定值(針),在這種情況下, 'KEYVAL_TO_FIND'如果找到了,那麼,因爲這部分數組總是會有相同的結構,所以我想得到'MY_VALUE'

我怎麼能做到這一點?由於

的數組什麼樣子(忽略鍵)的一個例子:

[0] = Array 
    (
     [0] = Array 
      (
       [0] = Array 
         [0] = KEYVAL_TO_FIND 
         [1] = Array 
          (
           [0] = CONST 
           [1] = MY_VALUE 
          ) 
        ) 
     [1] = VAL 
     [2] = Array 
       (
        [0] = FOO 
        [1] = BAR BAZ 
       ) 
    ) 
+0

@Brian Driscoll:我還不熟悉w /遞歸 – JoshD 2011-05-02 14:19:18

+0

@JoshD:這篇文章很長但很容易理解http://devzone.zend.com/article/1235 - 這不是最簡單的編程習語,但你選擇了一個有用的任務來進行試驗。 – mario 2011-05-02 14:23:13

+0

[在多維數組中的所有鍵中搜索PHP]可能的重複(http://stackoverflow.com/questions/5835660/searching-within-all-keys-in-a-multidimensional-array-php) – 2011-05-02 14:25:15

回答

2

我用一個函數...

function array_searchRecursive($needle, $haystack, $strict=false, $path=array()) 
{ 
    if(!is_array($haystack)) { 
     return false; 
    } 
    foreach($haystack as $key => $val) { 
     if(is_array($val) && $subPath = array_searchRecursive($needle, $val, $strict, $path)) { 
      $path = array_merge($path, array($key), $subPath); 
      return $path; 
     } elseif((!$strict && $val == $needle) || ($strict && $val === $needle)) { 
      $path[] = $key; 
      return $path; 
     } 
    } 
    return false; 
} 

我希望你喜歡它,使用它:d 祝你有美好的一天!

+0

+1,不錯! - – 2011-05-02 14:38:37