8

私は他の誰かが書いたフォーム検証コードを見ていましたが、これを見ました:

strlen() == 0

フォーム変数が空かどうかをテストするときは、empty()関数を使用します。ある方法は他の方法よりも優れていますか? それらは機能的に同等ですか?

4

9 に答える 9

9

動作が異なる場合がいくつかあります。

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.
于 2011-08-16T02:26:55.017 に答える
7

次のものは空と見なされます。

"" (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 などは確認しません。状況はどうですか。

参照

于 2011-08-16T02:24:59.543 に答える
7

strlenempty変数が空かどうかをテストするために使用されている間、文字列内の文字数を取得することです

空の意味:

empty("") //is empty for string
empty(0) // is empty for numeric types
empty(null) //is empty 
empty(false) //is empty for boolean
于 2011-08-16T02:25:25.337 に答える
2
$f = 0; echo empty($f)? 'Empty':'Full'; // empty
$f = 0; echo strlen($f); // 1

私が使用するフォームの場合isset。より明確です。;-)

于 2011-08-16T02:24:50.930 に答える
2

empty()の場合は true を返します$x = "0"。だから違いがあります。

http://docs.php.net/manual/en/types.comparisons.php

于 2011-08-16T02:25:20.290 に答える
2

emptyブール値 false の反対です。

empty言語構造です。

strlen関数です。

strlen文字列のバイト長を返します。

strlen($str)==0バイト長が 0 の場合の比較 (緩い比較) です。

その比較は、文字列が空の場合に true になりますempty($str)。空の (長さゼロの) 文字列の場合も do の式と同様です。

ただし、他のすべての場合:

emptyブール値 false の反対です。

strlen文字列のバイト長を返します。

彼らはお互いに多くを共有していません。

于 2011-08-16T03:21:21.410 に答える
0

empty()は、すべての変数タイプ用です。strlen()、文字列または文字列に安全にキャストできるもので使用する方が良いと思います。たとえば、

strlen(array());

PHP Warning: strlen() expects parameter 1 to be string, array givenエラーをスローします

于 2011-08-16T02:25:05.580 に答える
0

入力が の場合0

strlen(0) = 1
empty(0) = false <-- non-empty
于 2011-08-16T02:27:08.823 に答える