每当有人在我的网站上添加“项目”时,我会将项目编号记录在名为items_added.log的文件中。我想制作一个脚本,向我展示5个最常添加的项目。让我们说这是我的阵列:
1 => 100
2 => 200
3 => 300
4 => 400
5 => 500
6 => 600
7 => 700
8 => 800
9 => 900
10 => 1000
在这种情况下,我想打印这个数组;
10 => 1000
9 => 900
8 => 800
7 => 700
6 => 600
5 => 500
我该怎么办?到目前为止,这是我的代码:
<?php
$file = 'items_added.log';
$content = file_get_contents($file);
$arrItems = explode("\n", $content);
function array_count_values_of($value, $array) {
$counts = array_count_values($array);
return $counts[$value];
}
$itemCounts = array();
foreach($arrItems as $item) {
$itemCounts[$item] = array_count_values_of($item, $arrItems);
}
// Somehow print the 5 largest values (the 5 most commonly added items)
// $itemCounts is an array which contains all items ever added & how many times they have been added
// The structure is ItemNumber => Frequency
?>
答案 0 :(得分:1)
你应该使用arsort,这会对数值进行排序(但反之,从最高到最低)。
arsort($itemCounts);
$top5 = array_slice($itemCounts, 0, 5);
然后你在变量$ top5中拥有数组的$ top5。
答案 1 :(得分:0)
无需使用任何自定义代码。
<?php
$arr = [
1 => 100,
2 => 200,
3 => 300,
4 => 400,
5 => 500,
6 => 600,
7 => 700,
8 => 800,
9 => 900,
10 => 1000
];
arsort($arr);
$arr = array_slice($arr, 0, 5, 1);
print_r($arr);
?>
希望有所帮助。如有其他问题,请通知我。
答案 2 :(得分:0)
<?php
$arr = [
1 => 100,
2 => 200,
3 => 300,
4 => 400,
5 => 500,
6 => 600,
7 => 700,
8 => 800,
9 => 900,
10 => 1000
];
rsort($arr);
print_r($arr);
?>