【PHP】Fatal error: [] operator not supported for strings の原因と対処法

PHPを実行したらFatal error: [] operator not supported for stringsが表示されて実行時エラーとなったことはないでしょうか。

文法も何も間違っていないはずなのに、なぜこのエラーが発生するのか、原因と対処法を解説します。

目次から探す

【PHP】Fatal error: [] operator not supported for strings の原因

Fatal error: [] operator not supported for stringsは、文字列で変数を初期化したにもかかわらず、配列として扱おうとした場合に発生します。

<?php
       $a = "Hello";
       $a[] = "Goodbye";
?>

変数$aは文字列(string)として初期化されていますが、配列としてアクセスしようとしています。この場合はFatal errorが発生して実行できません。

変数名かぶりでこのエラーが起こりやすいです。変数名は絶対にかぶらないように気をつけましょう。

直前に配列を代入して置けば問題なし

配列として扱う前に配列のデータを代入しておけば、代入以降は配列として扱えるようになります。

<?php
       $a = "Hello";
       $a = array();
       $a[] = "Goodbye";
?>

この書き方であればエラーが発生することはありません。ただし、その行以降は配列としてしかアクセスできないようになるので、配列として再初期化した後に$a = "Hello";としてしまうと返される値はおかしくなりますので気をつけてください。

PHP Warningとして表示される可能性もある

使用しているPHPの警告レベルの設定によってはFatal errorではなくPHP Warningとして処理されることがあります。

PHP Warningはエラーではなく警告であるため、Warningメッセージは無視する・非表示にする設定でPHPを実行していた場合、エラーに気づくことができませんので気をつけるようにしましょう。

開発時は全てのWarningメッセージを表示させておくことをおすすめします。

error_reporting(-1);

上記コードをPHPファイルの先頭に書いておけば全てのエラー・警告が全て表示されます。

目次から探す