Запрос многомерных массивов Переполнение стека

Например, у меня есть массив, как показано ниже:

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
)

Какой самый простой и оптимальный способ сделать это?
Благодарю вас!

-1

Решение

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

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, но это определенно веселее (по крайней мере, если вы спросите меня :))

Если вы не хотите изменять исходный массив, сделайте копию и отсортируйте копию.

PS: Google твой друг …

1

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