質問: do whileで数字を羅列するコードを書いたときに 変数を初期化せずにループ内で使ってしましました。 その時の実行結果が下のようになったのですが、 ・どうしてNULLの次がinit(0)ではなくinit(1)なのか ・$iはどこで初期化されて整数型と認識されたのか が気になったのですがわかりません。 ``` NULL int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) ``` ``` do{ var_dump($i); $i++; }while($i < 10); ``` こういった質問サイトを使うのは初めてなので 何か足りない情報なども含めて 教えていただけたらと思います。 よろしくおねがいします。 ### バージョンはPHP7.0.27
回答: > > どうしてNULLの次がint(0)ではなくint(1)なのか > > > `++`演算子は、`NULL`に適用すると1になります(PHPマニュアル)。 > > $iはどこで初期化されて整数型と認識されたのか > > > まず、未定義の変数を使うと、(`E_NOTICE`を出しながら)`NULL`として認識されます。そして、上述のように、`++`の結果として整数が生成します。 なお、`E_NOTICE`といえども無視すべきでないのは間違いないです。エラーを全部表示する設定にすることをおすすめします。