3

次のことを考慮してください

if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }

上記の各行はほとんど同じことを行います。どちらを使うかは特に決めていません。もっと具体的に言うべきですか?それは本当に問題ですか?

4

3 に答える 3

9

私はこれを使用します:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // POST request
}
于 2009-03-20T21:48:54.310 に答える
1

リクエストが POST リクエストを使用して行われたかどうかをテストしたい場合は、 $_SERVER['request_method'] をチェックするのが良い方法です。

配列が空かどうかを調べたい場合は、いくつかの違いがあります。

  • 空の()

Empty は、変数が「空」かどうかをチェックします。PHP は、次の値を空と見なします。

*  "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

Empty は言語構造であるため、これをコールバックとして使用できないため、次のコードは失敗します。

$var = array(); call_user_func('empty', $var);

また、変数のみをチェックするため、以下も致命的で失敗します。

if (empty(array()) { // do something }

また、count よりも高速ですが、これを他のものよりも考慮する必要はありません。

  • カウント()

Count は「通常の」関数です。最初にパラメーターを配列にキャストし、それが空かどうかをチェックします。個人的には、これを使用して空の配列をチェックします。

  • if ($value) { // 何かをする }

ここで $value はブール値にキャストされ、空の配列は false にキャストされるため、count と同じ結果が得られるため、これは count とは少し異なります。

キャストのために、非常に大きな落とし穴があります。

$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false
于 2009-03-21T01:53:27.497 に答える
1

empty()引数変数が設定されていないか設定されているが False に評価される場合に True を返すため、私は常に使用することを好みました (空の配列はそうなります)。if(!isset($_POST) || !$_POST) { echo 'something'; }それは私の心の中で一歩を節約し、今述べたカオスと同等のものを置き換えます.

于 2009-03-20T22:08:19.207 に答える