How to sort each column of a matrix with strings in PHP

1 Answer

0 votes
function sortColumns(&$matrix) {
    $rows = count($matrix);
    $cols = count($matrix[0]);

    for ($col = 0; $col < $cols; $col++) {
        // Extract column into an array
        $column = [];
        for ($row = 0; $row < $rows; $row++) {
            $column[] = $matrix[$row][$col];
        }

        // Sort the column
        sort($column);

        // Place sorted values back into the matrix
        for ($row = 0; $row < $rows; $row++) {
            $matrix[$row][$col] = $column[$row];
        }
    }
}

function printMatrix($matrix) {
    foreach ($matrix as $row) {
        echo implode(" ", $row) . "\n";
    }
}

$matrix = [
    ["ccc", "zzzz", "yyyyyy"],
    ["eeee", "aaa", "ffff"],
    ["uu", "hhh", "uuu"],
    ["bbb", "gg", "x"]
];

echo "Original Matrix:\n";
printMatrix($matrix);

sortColumns($matrix);

echo "\nSorted Matrix:\n";
printMatrix($matrix);



  
/*
run:
  
Original Matrix:
ccc zzzz yyyyyy
eeee aaa ffff
uu hhh uuu
bbb gg x

Sorted Matrix:
bbb aaa ffff
ccc gg uuu
eeee hhh x
uu zzzz yyyyyy
 
*/

 



answered Jun 2, 2025 by avibootz
...