在opencart中,我正在开发管理面板。
我想表明,十大商店及其各自的访问。
目前,我在表格中有这些信息,我的php循环就是这个。
<?php foreach ($stores as $store) { ?>
<?php echo $store['name']?>
<?php echo number_format($store['visitor'])?>
<?php } ?>
这会使数据一团糟,但数据就在那里!
Alesso 20
爱丽丝在链中32
艾米怀恩豪斯27
Avenged Sevenfold 136
Axewound 30
Axwell 6
后街男孩24
等等......大约有100家不同的商店。
我想知道的是,在foreach循环中,我希望只显示10个商店。 访问次数最多的顶级商店,现在我有数据,但我如何在foreach中排序,只显示前10名?
非常感谢 肖恩
答案 0 :(得分:2)
您可以使用array_multisort
根据您的代码进行更新:
$limit=10;
foreach ($stores as $key => $row) {
$store[$key] = $row['name'];
$visitor[$key] = $row['visitor'];
}
array_multisort($visitor, SORT_DESC, $store, SORT_ASC, $stores);
$stores = array_chunk($stores, $limit);
foreach ($stores as $store) {
echo $store['name'];
echo number_format($store['visitor']);
}
答案 1 :(得分:1)
你有几个解决方案:
它应该是这样的:
function cmp($a, $b)
{
if ($a['visitor'] == $b['visitor']) {
return 0;
}
return ($a['visitor'] < $b['visitor']) ? -1 : 1;
}
usort($store, "cmp");
$storeIndex= 0;
while($storeIndex< 10) {
echo $store[storeIndex]['name'];
echo number_format($store[storeIndex]['visitor']);
$storeIndex++;
}