できるかな?と思ってテスト…
<?php function r($count) { echo $count."\n"; if ($count < 10) { r(++$count); } } r(1);
↓
1 2 3 4 5 6 7 8 9 10
でも、関数名を変えると再帰呼び出ししてるところも変えないといけない。
__FUNCTION__を使う
関数内では、__FUNCTION__が関数名を示すので
<?php function r($count) { echo $count."\n"; if ($count < 10) { __FUNCTION__(++$count); } }
ってやった…Parse Error…ですよねー。
一旦変数にする。
<?php function r($count) { $f_name = __FUNCTION__; echo $count."\n"; if ($count < 10) { $f_name(++$count); } }
これはうまくいった。だけど…だけどですよねー。JavaScriptならarguments.callee使えるのになー。
(function(c){ console.log(c++); if (c<10) { arguments.callee(c); } })(1)
PHPのClosureは変数に入れてるしなー。ダメっぽいな。