我已经在问题上询问了如何将Ruby函数转换为JS,并且现在我正在尝试使用JS实现到PHP,但是某些地方似乎无法正常工作,请告诉我我缺少了什么?
以下是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]]))
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]]));
有问题吗?错误信息:
警告:array_shift()函数期望只传入1个参数,但是在[...][...]的第24行传入了3个参数
无效的参数传递给foreach()函数,在[...][...]的第10行
警告:无效的参数传递给foreach()函数,在[...][...]的第10行
警告:无效的参数传递给foreach()函数,在[...][...]的第10行
警告:无效的参数传递给foreach()函数,在[...][...]的第10行
注意:未定义变量$out,在[...][...]的第16行
警告:array_reverse()函数期望传入一个数组作为参数,但是传入了null,在[...][...]的第25行
警告:count()函数的参数必须是一个数组或实现了Countable接口的对象,在[...][...]的第21行
array_shift(...$a)
应该改为...array_shift($a)
才能与JS等效。 - Barmar