function transpose(array $matrix): array {
$rows = count($matrix);
$cols = count($matrix[0]);
$result = array_fill(0, $cols, array_fill(0, $rows, 0));
for ($i = 0; $i < $rows; $i++) {
for ($j = 0; $j < $cols; $j++) {
$result[$j][$i] = $matrix[$i][$j];
}
}
return $result;
}
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
$transpose = transpose($matrix);
foreach ($transpose as $row) {
echo implode(" ", $row) . "\n";
}
/*
run:
1 4 7
2 5 8
3 6 9
*/