作成日: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) ) {
以下、略