【问题标题】:get 5 highest value from foreach loop php [duplicate]从foreach循环php中获得5个最高值[重复]
【发布时间】:2016-03-16 12:48:37
【问题描述】:

我在foreach中做了一段代码:

foreach ($queries as $record) {
    $total[] = $record->TotalTrans;
}

我想从这条记录中确定前 5 个结果整数。

结果示例:

stdClass Object
(
    [Transactions] => A
    [TotalTrans] => 2
)
stdClass Object
(
    [Transactions] => B
    [TotalTrans] => 95
)
stdClass Object
(
    [Transactions] => C
    [TotalTrans] => 5
)
stdClass Object
(
    [Transactions] => D
    [TotalTrans] => 12
)
stdClass Object
(
    [Transactions] => E
    [TotalTrans] => 4
)

有没有办法在 foreach 中对其进行排序?谢谢

【问题讨论】:

  • 首先将对象转换为数组
  • 将您的对象放入一个数组中,并使用 usort 和自定义排序功能(参见链接中的示例)。
  • 你的所有对象都在一个数组中吗?是$queries这个数组吗?

标签: php arrays sorting for-loop


【解决方案1】:

使用usort 对您的$queries 数组进行排序:

usort
(
    $queries,
    function( $a, $b )
    {
        return $b->TotalTrans > $a->TotalTrans;
    }
);

usort 使用用户定义的比较函数按值对数组进行排序:在您的情况下,只需比较 ->TotalTrans 值。

现在你的数组是:

Array
(
    [0] => stdClass Object
        (
            [Transactions] => B
            [TotalTrans] => 95
        )
    [1] => stdClass Object
        (
            [Transactions] => D
            [TotalTrans] => 12
        )
    [2] => stdClass Object
        (
            [Transactions] => C
            [TotalTrans] => 5
        )
    [3] => stdClass Object
        (
            [Transactions] => E
            [TotalTrans] => 4
        )
    [4] => stdClass Object
        (
            [Transactions] => A
            [TotalTrans] => 2
        )
)

仅检索前 5 行:

$topFive = array_slice( $queries, 0, 5 );

编辑:

使用foreach() 循环,您可以按以下方式继续:

foreach ($queries as $record)
{
    $total[] = $record->TotalTrans;
}

rsort( $total );
$topFive = array_slice( $total, 0, 5 );

rsort() 是一个按值对数组进行倒序排序的函数。


【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2014-07-13
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2022-11-08
    • 2012-06-15
    • 2017-08-19
    相关资源
    最近更新 更多