Asked already a question about converting functions from Ruby to JS, and now I'm trying to implement with JS to PHP, but something does not work, tell me what I'm missing?
The code on JS:
function transpose(a) {
return a.length === 0 ? a : a[0].map((col, i) => a.map((row) => row[i]))
}
function f(a) {
return a.length === 0 ? [] : [...a.shift(), ...f(transpose(a).reverse())];
}
console.log(f([[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]))
In PHP do so:
function transpose($array)
{
if (count($array) === 0) return $array;
foreach ($array as $rowkey => $row)
{
foreach($row as $colkey => $col)
{
$out[$colkey][$rowkey] = $col;
}
}
return $out;
}
function f($a)
{
return (count($a) === 0)
? []
: [
array_shift(...$a),
f(array_reverse(transpose(...$a)))
];
}
print_r(f([[1,2,3,4],[10,11,12,5],[9,8,7,6]]));
Is there a problem? Errors:
Warning: array_shift() expects exactly 1 parameter, 3 given in [...][...] on line 24
Invalid argument supplied for foreach() in [...][...] on line 10
Warning: Invalid argument supplied for foreach() in [...][...] on line 10
Warning: Invalid argument supplied for foreach() in [...][...] on line 10
Warning: Invalid argument supplied for foreach() in [...][...] on line 10
Notice: Undefined variable: out in [...][...] on line 16
Warning: array_reverse() expects parameter 1 to be array, null given in [...][...] on line 25 Warning: count(): Parameter must be an array or an object that implements Countable in [...][...] on line 21
</div>