質問: 以下のようなコードを書いたときに、 ”Variable '$data1' is undefined”と$data1の所が黄色いアンダー線で強調されエラーになります。 処理事体はできているのですが、何故このエラーになるのかご教示していただきたいです。 よろしくお願い致します。 ランダムデータ...並び替えたデータ \n"; } ?>
回答: > > 黄色いアンダー線で強調されエラーになります。 > > > ご自身が何でこの情報を得たか書かないと見ている人にはわかりません。 おそらくEclipse上でコードを組まれているかどうかかとは思いますが、 全ての人がEclipseを使っているとは限りませんし、Eclipseであってもデフォルトテーマから変更していたりカスタマイズされていると何のことかわかりません。 同じEclipseでもバージョンまで明記(できればPHPも)してください。 さて、これはエラーではなくどちらかというと警告です。 おそらく下記の場所などに出ている警告かと思いますが、 ``` for($i=0;$i<4;$i++){ $data1[]=mt_rand(0,6); } ``` この$data1 という変数は初期宣言なしに配列としていきなり使われています。 PHPプログラム側はforが確実に回るかどうかは知らないため、文法的には所定の警告が出ます。 本来は利用前に下記のように初期で「配列の変数である」ことを宣言してあげるべきです。 ``` $data1 = []; ``` そもそも「配列である前提」だから提示のように組まれたのかと思いますが、プログラムは指示した通りにしか動かないので、配列かどうか宣言されていないのにいきなり配列として使おうとしているため、警告がでています。 型なども緩い言語ではありますが、明示することでより確固たるコードができますので、できる限り明示されたほうが後々考えると良いです。