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