在javascript中,你可以做这样的事情
arr.map(function(val) {
return typeof val == 'array' ? val.map(arguments.callee) : val.doSomething();
});
这将递归迭代arr
并应用于doSomething
每个值。
PHP 中是否有与 JavaScript 的 arguments.callee 等价的东西?
在javascript中,你可以做这样的事情
arr.map(function(val) {
return typeof val == 'array' ? val.map(arguments.callee) : val.doSomething();
});
这将递归迭代arr
并应用于doSomething
每个值。
PHP 中是否有与 JavaScript 的 arguments.callee 等价的东西?
PHP 中是否有与 JavaScript 的 arguments.callee 等价的东西?
您必须将函数传递给自身:
$func = function($a = 0) use (&$func) {
echo "$a\n";
if ($a == 1) {
return;
}
$func(1);
};
$func();
/* output:
0
1
*/
我不相信arguments.callee 有等价物。如果你真的想要 php 中的递归 lambda,总是有 y 组合模式:http ://en.wikipedia.org/wiki/Fixed-point_combinator#Y_combinator
不完全按照要求,但可能更合适:
array_walk_recursive($arr, function (&$val) {
$val = doSomething($val);
});