在javascript中,你可以做这样的事情
arr.map(function(val) {
return typeof val == 'array' ? val.map(arguments.callee) : val.doSomething();
});
这将递归遍历arr
并将doSomething
应用于每个值。
在PHP中是否有与JavaScript的arguments.callee等效的内容?
答案 0 :(得分:5)
在PHP中是否有与JavaScript的arguments.callee等效的内容?
您必须将该功能传递给自己:
$func = function($a = 0) use (&$func) {
echo "$a\n";
if ($a == 1) {
return;
}
$func(1);
};
$func();
/* output:
0
1
*/
答案 1 :(得分:2)
我认为没有相当于arguments.callee。如果你真的想在php中使用递归lambda,那么总有y组合模式:http://en.wikipedia.org/wiki/Fixed-point_combinator#Y_combinator
答案 2 :(得分:0)
不完全符合要求,但可能更合适:
array_walk_recursive($arr, function (&$val) {
$val = doSomething($val);
});