在php中搜索多维数组中的键值
我完全被php中的多维数组搞糊涂了。我有一个非常大的数组,我试图在其中进行一些搜索。也就是说,如果颜色为绿色,则检查年龄,结果数组应包含4个最高年龄值(颜色为绿色),并且所有其他子数组应不受影响。请帮忙在php中搜索多维数组中的键值,php,arrays,for-loop,multidimensional-array,foreach,Php,Arrays,For Loop,Multidimensional Array,Foreach,我完全被php中的多维数组搞糊涂了。我有一个非常大的数组,我试图在其中进行一些搜索。也就是说,如果颜色为绿色,则检查年龄,结果数组应包含4个最高年龄值(颜色为绿色),并且所有其他子数组应不受影响。请帮忙 Array ( [0] => Array ( [name] => arr1 [data] => Array ( [0] => Array
Array
(
[0] => Array
(
[name] => arr1
[data] => Array
(
[0] => Array
(
[name] => A
[age] => 5
[color] => green
)
[1] => Array
(
[name] => B
[age] => 4
[color] => green
)
[2] => Array
(
[name] => C
[age] => 10
[color] => Red
)
[3] => Array
(
[name] => F
[age] => 1
[color] => green
)
)
)
[1] => Array
(
[name] => arr2
[data] => Array
(
[0] => Array
(
[name] => cc
[age] => 8
[color] => yellow
)
[1] => Array
(
[name] => Y
[age] => 20
[color] => green
)
[2] => Array
(
[name] => Y
[age] => 9
[color] => green
)
)
)
)
预期的结果数组为
Array
(
[0] => Array
(
[name] => arr1
[data] => Array
(
[0] => Array
(
[name] => A
[age] => 5
[color] => green
)
[1] => Array
(
[name] => B
[age] => 4
[color] => green
)
[2] => Array
(
[name] => C
[age] => 10
[color] => Red
)
)
)
[1] => Array
(
[name] => arr2
[data] => Array
(
[0] => Array
(
[name] => cc
[age] => 8
[color] => yellow
)
[1] => Array
(
[name] => Y
[age] => 20
[color] => green
)
[2] => Array
(
[name] => Y
[age] => 9
[color] => green
)
)
)
)
对于新数组应该包含最高年龄值(颜色为绿色)以及主数组中的所有其他子数组的问题,我完全感到困惑。您的reultant数组令人困惑,我们可以知道您到底需要什么吗?在这种情况下,请详细告诉我们需要什么。在整个阵列中,检查颜色是否为绿色。如果我们得到的绿色超过5,请检查其年龄。生成的数组应该只包含4个对应的年龄最大的绿色值。在这个例子中,我有5个绿色的值。然后我检查了年龄,只显示了最大的4个年龄。你想要结果数组中最高的绿色值吗?
<?php
// Your code here!
$ar[0] = array('name' => 'arr1',
'data' => array
(
'0' => array
(
'name' => 'A',
'age' => 5,
'color' => 'green'
),
'1' => array
(
'name' => 'B',
'age' => 4,
'color' => 'green'
),
'2' => array
(
'name' => 'C',
'age' => 10,
'color' => 'Red'
),
'3' => array
(
'name' => 'F',
'age' => 1,
'color' => 'green'
)
)
);
$ar[1] = array
(
'name' => 'arr2',
'data' => array
(
'0' => array
(
'name' => 'cc',
'age' => 8,
'color' => 'yellow'
),
'1' => array
(
'name' => 'Y',
'age' => 20,
'color' => 'green'
),
'2' => array
(
'name' => 'Y',
'age' => 9,
'color' => 'green'
)
)
);
$green = array();
foreach($ar as $k1=>$a1){
foreach($a1['data'] as $k2=>$a2){
if($a2['color']=='green') {
array_push($green,$a2['age']);
}
}
}
rsort($green);
$green = array_splice($green,0,4);
foreach($ar as $k1=>$a1){
foreach($a1['data'] as $k2=>$a2){
if($a2['color']=='green') {
if(!in_array($a2['age'], $green)){
unset($ar[$k1]['data'][$k2]);
}
}
}
}
print_r($ar);
?>