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をソートするためだと思います。

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すると、新しい配列が作成されます (並べ替えられていません)。

rsort2番目では、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($array, $sort_by, $order=SORT_ASC)
    {
        $new_array = 配列();
        $sortable_array = 配列();

        if (count($配列) > 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);
                }
            }

            スイッチ ($order) {
                ケース SORT_ASC:
                    asort($sortable_array);
                壊す;
                ケース SORT_DESC:
                    asort($sortable_array);
                壊す;
            }

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

        $new_array を返します。
    }
于 2013-01-04T13:08:15.270 に答える