Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сортирам списък с масиви в зигзаг в PHP?

Идеята би била да:

  • Сортирайте началните си данни (или за предпочитане, започнете с сортираните).
  • Разделете го на парчета, основно по една на всеки от вашите редове.
  • Обърнете реда на всяка друга част.
  • Обърнете матрицата, така че да имате групите си – по една на колона вместо по една на ред.

Пример:

// 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на курсора в цикъл на съхранена процедура

  2. MYSQL group_concat еквивалент в Sybase ASE?

  3. Как да създадете TRIGGER в SEQUELIZE (nodeJS)?

  4. MySQL:Подреждане по поле, поставяне на празни клетки в края

  5. MySQL автоматично съхранява дата и час за всеки ред