PHP поиск ключа в массиве и вернуть его значение?

Я хотел бы найти ключ в многомерном массиве, и я бы хотел получить значение, связанное с этим ключом. Например, я хотел бы извлечь следующие тексты из следующего массива:

SENT AT 12.08ms 

И текст

 sample id 41962 

Ниже приведен массив print_r ():

  Array ( [0] => Array ( [VERSION] => Array ( [0] => Array ( [group] => [param] => Array ( ) [value] => Array ( [0] => Array ( [0] => 3.0 ) ) ) ) [SAMPLE] => Array ( [0] => Array ( [group] => [param] => Array ( ) [value] => Array ( [0] => Array ( [0] => sample id 41962 ) ) ) ) [TSAM] => Array ( [0] => Array ( [group] => [param] => Array ( ) [value] => Array ( [0] => Array ( [0] => sample group 141 ) [1] => Array ( [0] => ¯ ) [2] => Array ( [0] => sample batch 81 ) [3] => Array ( [0] => ) [4] => Array ( [0] => ) ) ) ) [STATUS] => Array ( [0] => Array ( [group] => [param] => Array ( [TYPE] => Array ( [0] => CART ) ) [value] => Array ( [0] => Array ( [0] => SENT AT 12.08ms ) ) ) ) ) ) 

Может ли кто-нибудь предоставить мне оптимизированный код для вышеуказанной проблемы. Многомерный массив содержит от 5000 до 10000 массивов.

Если все ключи массива имеют одинаковую структуру, следующий код должен работать:

 foreach($array as $item){ $sentat = $item['STATUS'][0]['value'][0][0]; $sample = $item['SAMPLE'][0]['value'][0][0]; } 

Более подробная информация поможет нам предоставить вам больше советов 🙂

Пожалуйста, посмотрите, работает ли моя функция для вас:

 function get_value_by_key($array,$key) { foreach($array as $k=>$each) { if($k==$key) { return $each; } if(is_array($each)) { if($return = get_value_by_key($each,$key)) { return $return; } } } } 

Использование:

 $array = array('array1'=>array('array2'=>array('find_some_key'=>'some_value'))); echo get_value_by_key($array,'find_some_key'); // outputs: some_value 

У меня была та же проблема, поэтому я разработал эту функцию для решения

 private function array_key_search($value, $key) { $result = false; if (is_array($value)) { foreach ($value as $k => $v) { $result = $k === $key ? $v : $this->array_key_search($v, $key); if ($result) { break; } } } return $result; } 

Эта функция проходит все ключи массива и извлекает первое вхождение с именем, которое вы назначаете переменной $ key