関数 counter($d=0) {
$counter = 1+$d;
return function() use(&$counter) {return $counter ++;};
$a = counter( );
echo $a(); //1
echo $a(); 2 に等しい
関数内の変数はローカルです。パブリックに使用するにはどうすればよいですか?
echo $a(); //1
よくわかりません、答えてください。詳しくは、2時間勉強しましたが、まだ理解できません
----------
適当に書いたので、分析できたかどうかはわかりません。は正しいです、修正してアドバイスをお願いします
ディスカッションへの返信 (解決策)
何を使えばいいですか?
(&$counter) を使用するので、もちろんその結果を知る必要があります。その & により、ルールが変更されました
参照であるため、2 つ以上の変数が同じデータ領域を指します。 1 つを削除すると、もう 1 つはまだ残っています
それはたまたまポインタです...そのため、メモリの一部はこの匿名関数に残ります
この時点で、匿名関数 $counter は $a にのみ属します。 $b = counter(); と設定すると、別の独立した $counter が存在します