例如,我有如下数组:
Array
(
[0] => Array
(
[a] => 1
[b] => 0
[c] => 1
[d] => 1
)
[1] => Array
(
[a] => 2
[b] => 0
[c] => 3
[d] => 3
)
[4] => Array
(
[a] => 5
[b] => 1
[c] => 3
[d] => 2
)
)
现在我只想接收具有最大[d]值的数组。所以在这种情况下:
Array (
[a] => 2
[b] => 0
[c] => 3
[d] => 3
)
什么是最简单、最优化的方法?非常感谢。
$res=array();
foreach ($array as $temp)
{
foreach ($temp as $k=>$value)
{
if(!isset($res[$k]))
{
$res[$k]=$value;
}
else
{
$res[$k]=max($value,$res[$k]);
}
}
}
print_r($res);
输出阵列([a]=>5[b]=>1[c]=>3[d]=>3)
更新答案
$res=array();
$max=0;
foreach ($array as $temp)
{
if($max<$temp['d'])
{
$max=$temp['d'];
$res=$temp;
}
}
print_r($res);
输出阵列([a]=>2[b]=>0[c]=>3[d]=>3)
$array = Array
(
[0] => Array
(
[a] => 1
[b] => 0
[c] => 1
[d] => 1
)
[1] => Array
(
[a] => 2
[b] => 0
[c] => 3
[d] => 3
)
[4] => Array
(
[a] => 5
[b] => 1
[c] => 3
[d] => 2
));
uasort ( $array, function ($a, $b) {
return $a['d'] > $b['d'];
}
);
$valueYouAreSearchingFor = $array[0];
我使用uasort使用匿名函数对数组进行排序。我必须测试它是否比ForEach循环更快,但它确实更有趣(至少如果你问我:)
如果不想更改原始数组,请制作一个副本并对副本进行排序。
附言:谷歌是你的朋友。。。
$subArray1 = array('a' => 1, 'b' => 0, 'c' => 1, 'd' => 1);
$subArray2 = array('a' => 2, 'b' => 0, 'c' => 3, 'd' => 3);
$subArray3 = array('a' => 5, 'b' => 1, 'c' => 3, 'd' => 2);
$data = array($subArray1, $subArray2, $subArray3);
$resultArray = array();
/*
Turn off 'notification' level errors or add 'isset' checks
*/
foreach($data as $subArray)
{
foreach($subArray as $key => $value)
{
$resultArray[$key] = max($resultArray[$key], $value);
}
}
var_dump($resultArray);