0

这是我的代码

rsort($count_bit);
foreach (array_count_values($count_bit) as $bit => $nums)
{
echo "<tr><td width='90%'>Version: " . $bit .  "</td><td>" . $nums . "</td></tr>";
}

这呼应了一个随机顺序,我认为它是因为它对稍后通过 array_count_values 运行的 $count_bit 进行排序,所以实际上我需要排序:array_count_values($count_bit) 而不是 $count_bit,我试过了

foreach (rsort(array_count_values($count_bit)) as $bit => $nums)

但这没用,我也想过做

$count_bit1 = new array($count_bit);
rsort($count_bit1);

但是当我回应它时,$bit 只是显示为 1,2,3,4,5,6,7,8 并失去了它的独特价值。有任何想法吗

我处理的任何例子都是这样的:

 Version: 665   14
 Version: 645   1
 Version: 660   5
 Version: 651   1
 Version: 662   1
 Version: 649   1

我希望它显示 14,5,1,1,1,1 而不是随机的

$bit 回显版本号, $nums 回显它在原始循环中找到的版本号的数量

4

2 回答 2

1

您的逻辑顺序是关闭的。

在您的第一个示例中,您对数组进行排序,然后使用array_count_value它创建一个新数组(未排序)。

rsort在您的第二个中,您使用foreach循环中的返回值。rsort返回一个布尔值。

您需要使用arsort它,因为它维护数组的索引,而rsort在进行排序时以数字方式重新键入您的数组。这就是为什么您的“版本”变成递增数字的原因。

PHP

$new_array = array_count_values($count_bit);
arsort($new_array);
foreach($new_array as $bit => $nums)
{
    // Output your html with your values here
    echo sprintf("Version: %s > Count: %s\n", $bit, $nums);
}

输出(我自己的数组示例)

Version: 665 > Count: 11
Version: 660 > Count: 2
Version: 662 > Count: 1
Version: 645 > Count: 1
Version: 642 > Count: 1
于 2013-01-04T13:10:56.327 回答
0

试试这个函数来排序你的数组:

它需要 3 个参数:

1)要排序的数组。2)您要对该数组进行排序的索引。3) 排序顺序(SORT_ASC 或 SORT_DESC)

你可以这样称呼它:

array_sort($array, 'array_index', SORT_DESC);

不要将返回结果分配给任何变量或数组。它会自动对该数组进行排序,并将新排序的数组分配给同一个数组变量。

函数数组排序($array,$sort_by,$order=SORT_ASC)
    {
        $new_array = 数组();
        $sortable_array = 数组();

        if (count($array) > 0) {
            foreach ($array as $k => $v) {
                if (is_array($v)) {
                    foreach ($v as $k2 => $v2) {
                        如果($k2 == $on){
                            $sortable_array[$k] = strtolower($v2);
                        }
                    }
                } 别的 {
                    $sortable_array[$k] = strtolower($v);
                }
            }

            开关($订单){
                案例 SORT_ASC:
                    asort($sortable_array);
                休息;
                案例 SORT_DESC:
                    arsort($sortable_array);
                休息;
            }

            foreach ($sortable_array as $k => $v) {
                $new_array[$k] = $array[$k];
            }
        }

        返回 $new_array;
    }
于 2013-01-04T13:08:15.270 回答