2012-03-20 85 views
1

我想要做一個多維數組的搜索,以便將東西附加到特定的元素。我有一個函數可以執行搜索並返回該數組的特定部分,但我需要密鑰,因此我可以執行$array[key]編輯。PHP多維查找鍵=>值並返回鍵?

函數來獲取數組

function arraySearch($array, $key, $value) 
{ 
    $results = array(); 
    if (is_array($array)) 
    { 
     if (isset($array[$key]) && $array[$key] == $value) 
      $results[] = $array; 
     foreach ($array as $subarray) 
      $results = array_merge($results, arraySearch($subarray, $key, $value)); 
    } 
    return $results; 
} 

我真的不知道如何編輯此來從陣列的關鍵。

+0

[回答](http://stackoverflow.com/questions/5219871/multidimensional-array-search-using-php) – afuzzyllama 2012-03-20 16:05:14

+0

你傳遞給這個函數是什麼類型的數組?該函數旨在查找嵌套數組上的匹配鍵/值對。如果例如如果在嵌套的4個級別下找到匹配,您希望得到什麼作爲「關鍵」? – bfavaretto 2012-03-20 16:06:19

+0

它只是一個單一的級別數組。所以array(0 => array(HERE)...) – Steven 2012-03-20 16:06:54

回答

0

嘗試使用引用「&」

function arraySearch($array, $key, $value) 
{ 
    $results = array(); 
    if (is_array($array)) 
    { 
     if (isset($array[$key]) && $array[$key] == $value) 
      $results[] = &$array; 
     foreach ($array as $subarray) 
      $results = array_merge($results, arraySearch($subarray, $key, $value)); 
    } 
    return $results; 
} 

,然後你將能夠處理每個$的結果錄入,就好像是直接在$陣列。

$searchResult = arraySearch($myArray, 'test', 'val'); 
foreach ($searchResult as &$item) { 
    $item['nb']++; 
}