私は他の誰かが書いたフォーム検証コードを見ていましたが、これを見ました:
strlen() == 0
フォーム変数が空かどうかをテストするときは、empty()
関数を使用します。ある方法は他の方法よりも優れていますか? それらは機能的に同等ですか?
動作が異なる場合がいくつかあります。
empty('0'); // returns true,
strlen('0'); // returns 1.
empty(array()); // returns true,
strlen(array()); // returns null with a Warning in PHP>=5.3 OR 5 with a Notice in PHP<5.3.
empty(0); // returns true,
strlen(0); // returns 1.
次のものは空と見なされます。
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)
strlen() は、文字列 len が 0 かどうかを確認するだけです。int、float などは確認しません。状況はどうですか。
strlen
empty
変数が空かどうかをテストするために使用されている間、文字列内の文字数を取得することです
空の意味:
empty("") //is empty for string
empty(0) // is empty for numeric types
empty(null) //is empty
empty(false) //is empty for boolean
$f = 0; echo empty($f)? 'Empty':'Full'; // empty
$f = 0; echo strlen($f); // 1
私が使用するフォームの場合isset
。より明確です。;-)
empty()
の場合は true を返します$x = "0"
。だから違いがあります。
empty
ブール値 false の反対です。
empty
言語構造です。
strlen
関数です。
strlen
文字列のバイト長を返します。
strlen($str)==0
バイト長が 0 の場合の比較 (緩い比較) です。
その比較は、文字列が空の場合に true になりますempty($str)
。空の (長さゼロの) 文字列の場合も do の式と同様です。
ただし、他のすべての場合:
empty
ブール値 false の反対です。
strlen
文字列のバイト長を返します。
彼らはお互いに多くを共有していません。
empty()
は、すべての変数タイプ用です。strlen()
、文字列または文字列に安全にキャストできるもので使用する方が良いと思います。たとえば、
strlen(array());
PHP Warning: strlen() expects parameter 1 to be string, array given
エラーをスローします
入力が の場合0
、
strlen(0) = 1
empty(0) = false <-- non-empty