PHPのエラーメッセージ [] operator not supported for strings
PHPのエラーの対処方法をメモ。
PHPで配列のデータ追加時に、以下のようなエラーメッセージが出ました。
Message: [] operator not supported for strings
これは配列の初期化の扱いが、PHP7.1から変更されていることが原因のようでした。
(参考)
kitaney-wordpress.blogspot.com
Uncaught Error: [] operator not supported for strings エラーこれは、
$sample[] = $sample_data;など、配列にデータを追加するに当たって、配列の初期化の型がおかしい場合におきるようですね。PHP 7.0.x まではエラーにはなりませんでした。
PHP 7.0.x まで許容
$sample = "";
$sample[] = $sample_data;
PHP 7.1.x より
$sample = array();
$sample[] = $sample_data;
ということだったのです。
変数を配列として初期化することで解決する
以前なら、配列の初期化は
と書いても、後で動的に型変換してくれて、配列型のデータも入れられていたはず。
PHP7.1からは型チェックして、ちゃんとはじくようになったんですかね?
今後、配列の初期化は、
と書くようにしないとダメ?
空の配列を代入しておく以外にも、NULL値で初期化しておいてもOKでした。
NULLは「値を持たないことを表わす特殊型」なので、次に他の値が代入されたときに、その値の型を見て、型が変更されるのでしょうか?
以前に書いたコードには、上記の訂正が必要な箇所がたくさん残ってる気がする。
PHPのバージョンを上げるときには気を付けよう。
[]の呼び方
「[」と「]」は、角括弧(かくかっこ)と呼びます。
英語では、bracket(ブラケット)と呼びます。
(参考)括弧 - Wikipedia
PHPの最新の言語仕様は追いかけていないので盲点でした。
検索したら解決方法が見つかったので助かりました!(時間節約!)
情報を共有してくださっている方々、どうもありがとうございます。m(__)m