用于构造数组的PHP等价的JavaScript扩展语法是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用于构造数组的PHP等价的JavaScript扩展语法是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1773字,纯文字阅读大概需要3分钟。
内容图文
问过question关于将函数从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]]))
在PHP中这样做:
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]]));
有问题吗?错误:
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
解决方法:
您不需要在PHP版本中使用…运算符.您只需要将移位的行与递归调用的结果合并.
function f($a)
{
return (count($a) === 0)
? []
: array_merge(
array_shift($a),
f(array_reverse(transpose($a)))
);
}
array_merge(array_shift($a), f(array_reverse(transpose($a))))
与此处发生的事情是一样的:
[...a.shift(), ...f(transpose(a).reverse())]
…在JS中扩展数组的元素.它在PHP中的工作方式类似,但在此仅在函数定义或调用中有效.
内容总结
以上是互联网集市为您收集整理的用于构造数组的PHP等价的JavaScript扩展语法是什么?全部内容,希望文章能够帮你解决用于构造数组的PHP等价的JavaScript扩展语法是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。