php - 获取multi多维数组中的最高值

标签 php arrays loops for-loop multidimensional-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
                )
        )
)

我需要获取 amount 的最大值,即 50。我该怎么做?

这是我尝试过但没有用的方法:

$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;
    }
}

最佳答案

就这么简单。获取 payment 列数据,然后从生成的数组中提取 amount 数据,然后获取最大值。完成了。 (抱歉,我花了这么长时间 -- 我不得不将您发布的数组转换为可用的 php 数组。)

输入:

$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(Demo):

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

方法#2(Demo):

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

方法#3(Demo):

$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 的好处是:代码简洁,没有条件语句,没有全局变量声明/覆盖,直接取最大值。什么叫不爱!

如果方法#1 太可怕,您可以使用我的方法#2(由 aendeerei 首次发布)。我不喜欢它,因为它需要额外的步骤来初始化 $max 变量,对每次迭代执行条件检查,并在适当的时候覆盖 $max 变量。 foreach 循环的实际性能将取决于您的数组的大小,但是这两种方法之间的差异将不会被人类注意到。

方法 3 可能是我的新宠,因为在完全通过按键访问之前,没有条件,只有两个函数。但是,它确实需要声明必须排序的输入数组的部分副本。无论如何,选择你的选择——结果都是一样的。

关于php - 获取multi多维数组中的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014787/

相关文章:

php - #1046 - 未选择数据库

javascript - 使用嵌套在 .map 中的 .find 来构建对象数组

java - 仅对二维数组的行求和并将总和放入新数组中

python - 遍历列表时从列表中删除项目时出现奇怪的结果

php - 如何在PHP中计算总记录并重复主div 3次

php - 数组到字符串到数组的转换

php - 如何使用 .htaccess 将所有页面重定向到 https,但有异常(exception)?

Python 脚本,运行迭代谷歌搜索并打印热门结果和链接

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

c++ - 有人可以解释 "- ' 0' "