我想在多维数组中搜索键,我想得到与该键相关的相应值。 对于例如 我想从下面的数组中提取以下文本:
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个数组。
答案 0 :(得分:3)
请查看我的功能是否适合您:
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
答案 1 :(得分:2)
如果所有数组键具有相同的结构,则以下代码应该起作用:
foreach($array as $item){
$sentat = $item['STATUS'][0]['value'][0][0];
$sample = $item['SAMPLE'][0]['value'][0][0];
}
更详细的信息有助于我们为您提供更多提示:)
答案 2 :(得分:0)
我遇到了同样的问题,所以我开发了这个函数来解决
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
的名称检索第一个匹配项