プロが教えるわが家の防犯対策術!

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

A 回答 (3件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/09 19:27

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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/09 19:27

if ($a['exists']['non_existent']) {



$a['exists'] は存在するという前提で、php5.3と同じ動作を期待するなら

if (isset($a['exists']['non_existent']) ? $a['exists']['non_existent'] : substr($a['exists'], 0, 1)) {

ですかねぇ。
    • good
    • 2
この回答へのお礼

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

お礼日時:2014/11/09 19:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!