Warning: Illegal string offset inの意味

存在しない連想配列の、キー値にアクセスしようとした

考えられるエラーの原因

このワーニングは、存在しない連想配列の、キー値にアクセスしようとするときに発生します。PHP5.3からPHP5.4にアップデートされた場合、このワーニングが追加されていますので突然表示されたように思える事もあります。

例:
$a[‘type1’]=”aaa”;
$b=$a[‘type2’]; //PHP5.4ではワーニングが表示されます

上記の例では、type1という文字列キーの連想配列aaaという文字列が入っていますが、type2というキーは初期化されていません。PHP5.4以降でこのコードはワーニングを出力しますので、テンプレートやプラグインにこういったミスがあると、サイト上に表示されてしまいます。

エラーの対処方法・修正方法

関数を修正する

issetというもし文字列が存在するならアクセスするという命令文を該当のエラー箇所に付け加えるとワーニングは出なくなります。

例:

$a['type1']="aaa";
$b="";
if(isset($a['type2'])){ //連想配列 $aにtype2というキー値で値があるならば
    $b=$a['type2']; 
}

ワーニングが出ないようにする

ワードプレスでワーニングを表示しないようにするには、wp-config.phpに下記のように追記します

ini_set('display_errors','Off');
ini_set('error_reporting', 0 );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

WordPress ワードプレスのエラーの修正のご依頼はWPドクターまでお気軽にどうぞ [お見積もりは無料です]