sql >> データベース >  >> RDS >> Mysql

PHPでジグザグに配列リストをソートする方法は?

    アイデアは次のようになります:

    • 開始データを並べ替えます(または、できれば、並べ替えた状態から始めます)。
    • 基本的に各行に1つずつ、チャンクに分割します。
    • 他のすべてのチャンクの順序を逆にします。
    • マトリックスを反転して、グループを作成します。行ごとに1つではなく、列ごとに1つです。

    例:

    // Basic sample data.
    $players = range(1, 24);
    
    // Sort them ascending if you need to.
    sort($players);
    
    // Make a matrix. 2d array with a column per group.
    $matrix = array_chunk($players, ceil(count($players)/4));
    
    // Reverse every other row.
    for ($i = 0; $i < count($matrix); $i++) {
        if ($i % 2) {
            $matrix[$i] = array_reverse($matrix[$i]);
        }
    }
    
    // Flip the matrix.
    $groups = array_map(null, ...$matrix); // PHP 5.6 with the fancy splat operator.
    //$groups = call_user_func_array('array_map', array_merge([null], $matrix)); // PHP < 5.6 - less fancy.
    
    // The result is...
    print_r($groups);
    

    出力:

    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 12
                [2] => 13
                [3] => 24
            )
    
        [1] => Array
            (
                [0] => 2
                [1] => 11
                [2] => 14
                [3] => 23
            )
    
        [2] => Array
            (
                [0] => 3
                [1] => 10
                [2] => 15
                [3] => 22
            )
    
        [3] => Array
            (
                [0] => 4
                [1] => 9
                [2] => 16
                [3] => 21
            )
    
        [4] => Array
            (
                [0] => 5
                [1] => 8
                [2] => 17
                [3] => 20
            )
    
        [5] => Array
            (
                [0] => 6
                [1] => 7
                [2] => 18
                [3] => 19
            )
    
    )
    



    1. Oracle SQLでセミコロンとスラッシュを使用する必要があるのはいつですか?

    2. 管理および監視用のOracleDatabase用の27個のoracledbaスクリプト

    3. SQL Server(T-SQL)で日付から月の名前を取得する3つの方法

    4. SQL Serverで「datetimeoffset」を「smalldatetime」に変換します(T-SQLの例)