[] operator not supported for strings の対処方法
PHP5.4 / /8.3 へ切替えの検証をしていたら、【システムは問題なく動くけれど検証ツールに500エラーが表示される問題】が発生しました。
エラー箇所を確認すると以下のようなエラーメッセージが。
PHPのエラーメッセージ
Fatal error: Uncaught Error: [] operator not supported for strings in ~
配列の初期化をきちんと記載していないことが原因らしいので、
これを、
foreach ($rows as $row) {
$sample["result"]["code"][] = $row["sampleCode"];
}
こうしたら、
$sample["result"]["code"][] = array();
foreach ($rows as $row) {
$sample["result"]["code"][] = $row["sampleCode"];
}
エラーは出なくなりましたが今度は上手く動かなくなってしまった…。
また暫く検証ツールと睨めっこを続けていると、codeの中身が数値になっているのを発見。
これのせいか…。
{status: 1, result: {code: [1, 2, 3]}}
数値から文字列に変換して無事解決しました。
これPHP7.1から発生してたんですね。忘れないようにメモ。
最終的なコード
$sample["result"]["code"][] = array();
foreach ($rows as $row) {
$sample["result"]["code"][] = (string)$row["sampleCode"];
}