2012-03-20 64 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']++; 
}