多维数组查询PHP


Multidimensional Arrays enquiry PHP

例如,我有如下数组:

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);