PHP7でIllegal string offsetが出る
原因
要素が暗黙のうちに配列に変換されなくなった。
なんかこのへん? http://php.net/manual/ja/language.types.string.php#language.types.string.substr
code:hoge.php
$hoge = '';
if(!isset($hoge'fuga')){
$hoge'fuga' = 'piyo';
var_dump($hoge);
}
// PHP7.0まで
array(1) {
"fuga"=>
string(4) "piyo"
}
// PHP7.1から
<b>Warning</b>: Illegal string offset 'fuga' in ...
string(1) "p"
対策
ちゃんと配列であることを確かめてから値を突っ込む。
code:hoge.php
$hoge = '';
if(!isset($hoge'fuga')){
if(!is_array($hoge)){
$hoge = array();
}
$hoge'fuga' = 'piyo';
var_dump($hoge);
}
#PHP #PHP7 #tech