- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP declare文について、ticks指定回数の違いによる挙動差)
PHP declare文について、ticks指定回数の違いによる挙動差
このQ&Aのポイント
- PHPのdeclare文において、ticks指定回数の違いによって挙動が異なります。具体的には、ticksを1回指定した場合と2回指定した場合で結果が異なります。
- ticksを1回指定した場合、最後に余計な処理「print "|"が11回」が入る理由が分かりません。一方、ticksを2回指定した場合、余計な処理の数が減ります。
- PHPのregister_tick_function関数とdeclare文を組み合わせることで、コードの実行中に指定した関数を定期的に実行することができます。ticksの指定回数によって、実行頻度が変わるため、結果も異なるのです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
恐らく、 declare文の前に、register_tick_functionを叩いた場合、 declare文で一度動作して、 declare文のブロックが終了したところで一度動作する、という挙動をしているようです。 逆にdeclare文内で、register_tick_functionを叩いた場合、それ(register_tick_function)自信が実行された時点で、動作してるので、その時点で一回増えます。 ■例1 <?php register_tick_function('mytick'); declare(tick=1) //ここが評価されて一回 { echo "test"; //ここで一回 }//ブロックが終了したということで一回 ?> ■例2 <?php declare(tick=1) //ここは評価されない { register_tick_function('mytick'); //ここは評価され一回 } //ブロックの終了で評価されて一回 ?> ■例3(declareは、{}を使わないで、declare();と記述することも出来る) <?php register_tick_function('mytick'); declare(tick=1); //ここでdeclareの評価+declareが閉じたということ(;)で計二回評価 ?> と、言ったところです。ただ、マニュアルを見てもイマイチよくわからなかったので、 体感での回答になります。 一度上記記述を含めて、いくつか試して見てください。
お礼
回答ありがとうございました。