这是我的代码
rsort($count_bit);
foreach (array_count_values($count_bit) as $bit => $nums)
{
echo "<tr><td width='90%'>Version: " . $bit . "</td><td>" . $nums . "</td></tr>";
}
这回应了一个随机顺序,我认为它是因为它对$ count_bit进行排序,后来通过array_count_values运行所以它实际上我需要排序: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回应它在原始循环中找到的版本号的数量
答案 0 :(得分: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
答案 1 :(得分:0)
尝试使用此功能对数组进行排序:
需要3个参数:
1)要排序的数组。 2)您要对该数组进行排序的索引。 3)排序顺序(SORT_ASC或SORT_DESC)
您可以这样称呼:
array_sort($array, 'array_index', SORT_DESC);
不要将返回结果分配给任何变量或数组。它将自动对该数组进行排序,并将新排序的数组分配到同一个数组变量中。
function array_sort($array, $sort_by, $order=SORT_ASC) { $new_array = array(); $sortable_array = array(); if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = strtolower($v2); } } } else { $sortable_array[$k] = strtolower($v); } } switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; } foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } } return $new_array; }