2012-03-20 2 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

+0

Какой массив вы переходя к этой функции? Эта функция предназначена для поиска совпадающих пар ключ/значение на вложенных массивах. Если, например, если находит соответствие под 4 уровнями гнездования, что бы вы ожидали получить как «ключ»? – bfavaretto

+0

Это будет только один уровень. Итак, массив (0 => массив (ЗДЕСЬ) ...) – Steven

ответ

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']++; 
} 
Смежные вопросы