Get the maximum value in a multidimensional array

I need to get the maximum or maximum value in a multidimensional array.

here is my array $array:

[pay] => Array
(
    [0] => Array
        (
            [title] => Array
                (
                    [name] => 'hi'
                )
            [payment] => Array
                (
                    [amount] => 35
                    [currency] => USD
                )
        )

    [1] => Array
        (
            [title] => Array
                (
                    [name] => 'lol'
                )
            [payment] => Array
                (
                    [amount] => 50
                    [currency] => USD
                )
        )

    [2] => Array
        (
            [title] => Array
                (
                    [name] => 'ok'
                )
            [payment] => Array
                (
                    [amount] => 30
                    [currency] => USD
                )
        )
)

I need to get the maximum value for amount, which is 50. How can I do this?

here is what i tried but it didn't work:

$max = -9999999; //will hold max val
$found_item = null; //will hold item with max val;

foreach($array as $k=>$v)
{
    if($v['Total']>$max)
    {
        $max = $v['Total'];
        $found_item = $v;
    }
}
+4
source share
6 answers

. payment, amount , . . (, , php-.)

Input:

$array=["pay" => [
            ["title"=>["name"=>'hi'],"payment"=>["amount"=>35,"currency"=>"USD"]],
            ["title"=>["name"=>'lol'],"payment"=>["amount"=>50,"currency"=>"USD"]],
            ["title"=>["name"=>'ok'],"payment"=>["amount"=>30,"currency"=>"USD"]]
    ]
];

№ 1 ():

echo max(array_column(array_column($array["pay"],"payment"),"amount"));

# 2 ():

$max=0;
foreach($array["pay"] as $subarray){
    if($max<$subarray["payment"]["amount"]){
        $max=$subarray["payment"]["amount"];
    }
}
echo $max;

№ 3 (-):

$payments=array_column($array["pay"],"payment"); // declare payments array
rsort($payments);                                // sort by amount DESC
echo $payments[0]["amount"];                     // access the first amount value

:

50

# 1: , , /, max. !

# 1 , # 2 ( aendeerei). , $max, , , $max. foreach , .

3 , , . , . , - .

+2

, . foreach, .

1:

$max=0;
foreach($yourArray["pay"] as $value)
{
    if($max<$value["payment"]["amount"])
    {
        $max=$value["payment"]["amount"];
    }
}
echo $max;

2:

array json. array_column ,

$internals=array_column($yourArray["pay"],"payment");//retrieving payments
$amounts=array_column($internals, "amount");//retrieving amounts
arsort($amounts);
print_r(array_values($amounts)[0]);
+1

Usort 1-

$arr= array
(
     array
        (
            'payment' => array
                (
                    'amount' => 35,
                    'currency' => 'USD'
                )
        ),

     array
        (
            'payment' => array
                (
                    'amount' => 50,
                    'currency' => 'USD'
                )
        ),
     array
        (
            'payment' => array
                (
                    'amount' => 80,
                    'currency' => 'USD'
                )
        )
);

function sortAmount($x, $y) {
    return $y['payment']['amount'] - $x['payment']['amount'];
}

usort($arr, 'sortAmount');
echo "<pre>";
$highest=$arr[0];
print_r($highest)
//for value only
$highest=$arr[0]['payment']['amount'];

http://phpfiddle.org/main/code/p5hw-ivei

+1
$max = 0;
foreach ($array['pay'] as $key => $item) {
    $amount = $item['payment']['amount'];
    if ($amount > $max) {
        $max = $amount;
    }
}
echo $max;
+1

:

$result = array_reduce($array['pay'], function($a, $b){
  return $a ? ($a['payment']['amount'] > $b['payment']['amount'] ? $a : $b) : $b;
});

var_dump($result['payment']['amount']);
+1

pay. . n . 3 $pay. 3 "i".

$big=$pay[0];
for($i=1; $i<3; $i++){
 if($pay[i]>$big)
     $big=$pay[i];
}
echo $big;

, , . .

0
source

Source: https://habr.com/ru/post/1677316/


All Articles