PHP では、配列が空かどうかを判断する必要がある場合があります。通常、配列が空かどうかを判断するには empty() または count() 関数を使用しますが、配列内のすべての要素の値が NULL または 0 の場合、これらの関数は誤った結果を取得する可能性があります。そこで、この記事では、配列が空かどうかを正確に判断する方法を紹介します。
1. empty() 関数の制限
empty() 関数は、変数が空かどうかを判断するために PHP で一般的に使用される関数です。変数が空かどうかを判断できます。変数が未定義であるか、その値が false、''、0、'0'、null、array() などの場合は true を返し、それ以外の場合は false を返します。したがって、配列が空かどうかを判断するときは、通常次のように記述します。
$arr = array(); if(empty($arr)) { echo '数组为空'; } else { echo '数组不为空'; }
この方法は非常に単純に見えますが、配列内のすべての要素の値が NULL または 0 の場合、空( ) 関数は true を返しますが、これは明らかに私たちが望む結果ではありません。例:
$arr = array(null, 0, 0.0, false, ''); if(empty($arr)) { echo '数组为空'; } else { echo '数组不为空'; }
上記のコードは配列を空として返しますが、これは正しくありません。
2. count() 関数の問題
配列が空かどうかを判断するためによく使用されるもう 1 つの方法は、配列内の要素の数を返す count() 関数を使用することです。配列。配列内に要素がない場合、count() 関数は 0 を返し、それ以外の場合は配列内の要素の数を返します。したがって、配列が空かどうかを判断するコードは通常次のようになります:
$arr = array(); if(count($arr) == 0) { echo '数组为空'; } else { echo '数组不为空'; }
ただし、配列内のすべての要素の値が NULL または 0 の場合、count() 関数はまた、 0 を返します。これは、誤った判断を引き起こす可能性があることを意味します。例:
$arr = array(null, 0, 0.0, false, ''); if(count($arr) == 0) { echo '数组为空'; } else { echo '数组不为空'; }
上記のコードは空の配列を返しますが、これは私たちが望む結果ではありません。
3. 配列が空かどうかを正確に判断する
上記の問題を解決するには、配列が空かどうかを正確に判断する必要があります。正確に判断する方法は、foreach ループを使用して配列を走査し、配列内の各要素の値が空かどうかを確認することです。空でない要素がチェックされている場合、配列は空ではありません。それ以外の場合、配列は空です。以下はコード例です:
function is_empty_array($arr) { foreach($arr as $value) { if(!empty($value)) { return false; } } return true; } $arr = array(null, 0, 0.0, false, ''); if(is_empty_array($arr)) { echo '数组为空'; } else { echo '数组不为空'; }
上記のコードは「配列が空です」を出力します。これは必要な正しい結果です。
上記は、配列が空でないかどうかを判断するためにこの記事で紹介されている PHP メソッドです。foreach ループを使用して配列を走査すると、empty() 関数と count() 関数の制限を回避し、正確に判断できます。配列が空かどうか。
以上がPHPで配列が空かどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。