从闭包中调用当前闭包

4
在Javascript中,你可以通过以下方式实现这样的功能。
arr.map(function(val) {
    return typeof val == 'array' ? val.map(arguments.callee) : val.doSomething();
});

这将递归地遍历arr并对每个值应用doSomethingPHP中是否有类似于JavaScript的arguments.callee的相当内容?
3个回答

5
在PHP中是否有类似于JavaScript的arguments.callee的等效物?您需要将函数传递给自身:
$func = function($a = 0) use (&$func) {
    echo "$a\n";
    if ($a == 1) {
        return;
    }
    $func(1);
};

$func();

/* output:
0
1
*/

这很好。缺点是函数必须分配给一个变量。 - Cameron Martin

2

0

虽然不完全符合要求,但可能更加适合:

array_walk_recursive($arr, function (&$val) {
    $val = doSomething($val);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接