ラボ > PHP:配列関連

PHP 空の配列の確認

配列の中身が空のときはfalseになるっぽい

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