• ベストアンサー

illegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか? 例 $a = array('exists' => 'foo'); if ($a['exists']['non_existent']) { print 1; } print 2; exit;

質問者が選んだベストアンサー

  • ベストアンサー
  • sanzero
  • ベストアンサー率56% (58/102)
回答No.1

isset()を使えばいいと思います

toyoshima72
質問者

お礼

お礼が遅れました。ありがとうございました。

その他の回答 (2)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

if ($a['exists']['non_existent']) { $a['exists'] は存在するという前提で、php5.3と同じ動作を期待するなら if (isset($a['exists']['non_existent']) ? $a['exists']['non_existent'] : substr($a['exists'], 0, 1)) { ですかねぇ。

toyoshima72
質問者

お礼

お礼が遅れました。ありがとうございました。

noname#244856
noname#244856
回答No.2

5.3の挙動があまりにも不自然だったので5.4で修正されていますね。 http://blog.sarabande.jp/post/23850080234 $a = array('exists' => 'foo'); if (isset($a['exists']['non_existent'])) { print 1; } print 2; exit;

toyoshima72
質問者

お礼

お礼が遅れました。ありがとうございました。

関連するQ&A