我在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
数组进行排序:
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()
是一个按值以相反顺序对数组进行排序的函数。
- 阅读更多关于 usort()
- 阅读更多 关于 array_slice()
- 阅读更多关于 rsort()