作成日:2018-03-08, 更新日:2018-03-08
経緯と内容
希望は「jsonのデコード失敗したらfalseを返す。空の配列でもOK」。
下記のようなソースで、jsonのデコードが失敗していないのに「失敗」が出力されることがあった。
function hoge($json='') { if ( $json == '' ) { return false; } $ary = json_decode($json, true); if ( !is_array($ary) ) { $ary = false; } return $ary; } $json = 〇〇〇; if ( !$ary = hoge($json) ) { echo '失敗'; } else { echo '成功'; }
問題となった「$json」の値は「$json = '[]';」。
「json_decode()」をすると空の配列が返ってくるが、この空の配列がfalse扱いになるそうだ。
「if ( !$ary = hoge($json) ) {」は下記のように修正
$ary = hoge($json); if ( !is_array($ary) ) { 以下、略