sql >> Database teknologi >  >> RDS >> Mysql

Hvordan sorterer man array-liste i zig-zag i PHP?

Ideen ville være at:

  • Sortér dine startdata (eller begynd helst med dem sorteret).
  • Opdel det i bidder, stort set én pr. hver af dine rækker.
  • Vend rækkefølgen af ​​hver anden del.
  • Vend matrixen, så du har dine grupper - en pr. kolonne i stedet for en pr. række.

Eksempel:

// 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);
 

Output:

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. POWER() Funktion i Oracle

  2. Tillad brugeren at oprette og ændre tabel?

  3. Værktøj til at importere CSV-filer til MySQL-database?

  4. pip3 installation af mysql-python mislykkedes med fejlkode 1 i /tmp/pip-install-4nev4id4/mysql-python/