if(!empty($arr)){ //do something }
は最近、私は誰かが別等を用いる見た場合、私は配列$ ARRをテストするには、この方法を使用して空であります2番目の方法は配列をテストする簡単な方法ではありませんか?
if(!empty($arr)){ //do something }
は最近、私は誰かが別等を用いる見た場合、私は配列$ ARRをテストするには、この方法を使用して空であります2番目の方法は配列をテストする簡単な方法ではありませんか?
array()
のような空の配列は、false
と等しいと見なされます。したがって、単純なif ($arr)
は完璧に機能します。
empty
は同じ種類の比較を行いますが、変数$arr
がまったく存在しない場合は、欠落している変数についてはNOTICE
を起動しません。変数が存在すると確信が持てる場合は、empty
を使用しないでください。これは、重要なエラー報告を抑制するためです。変数が存在するかどうか、実際に変数が存在するかどうかが分からず、制御できない場合にのみempty
を使用してください。
empty
の詳細については、The Definitive Guide To PHP's isset And emptyを参照してください。
第2は、配列をブール値にキャストします。空の配列はfalse
に、それ以外のものはtrue
にキャストされます。従ってif($arr)
とif(!empty($arr))
は機能的に同一です。
第2の方法は理想的ではありません。 2番目のメソッドを使用して配列を扱っていると判断し、それをforeach文に渡すと、エラーが発生します。また、if($ arr)でテストするよりも、何をチェックしているのかが分かります。
私の好みは次のとおりです。
if (is_array($arr) && count($arr) > 0) {
//work with array
}
編集:私はここに私の基本的なポイントは、配列の存在をテストする能力が問題の一部に過ぎないということだと思います。 $ arrが文字列であることが判明した場合は、より堅牢なチェックが必要です。
どちらの方法も機能的に同等です。 empty()
のドキュメントには、以下のものがcasting to a boolを見てみると
"", 0, 0.0, "0", NULL, FALSE, array(), var $var;
空であると考えられている言及し、我々は両方の方法は、同じように異なる種類を扱う意味し、リストにはリストと一致していることを見ることができます。
'$ arr'が配列(例えば、整数' 1')でない場合、 '!empty($ arr)'もtrueを返します。 –
実際には、空でも理想的でもありません。 +1 – Aaron