在PHP中打印10个最大的数字数组值

时间:2014-10-14 12:14:53

标签: php arrays

每当有人在我的网站上添加“项目”时,我会将项目编号记录在名为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
?>

3 个答案:

答案 0 :(得分:1)

你应该使用arsort,这会对数值进行排序(但反之,从最高到最低)。

arsort($itemCounts);
$top5 = array_slice($itemCounts, 0, 5);

然后你在变量$ top5中拥有数组的$ top5。

答案 1 :(得分:0)

尝试arsortarray_splice

无需使用任何自定义代码。

<?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);
?>