2

次のような PHP 条件文を記述する利点はありますか。

if ($variable != NULL) {

if (!empty($variable)) {

if ($variable) {

それらはすべて同じものではありませんか?変数が存在するかどうかを確認しようとしているだけの場合、最後が常に最も単純なようです。ここで違いを理解するのを手伝ってくれてありがとう。PHP 101 の初日を見逃してしまいました。

4

4 に答える 4

6

この表をチェックして、PHP 比較演算子のスキニーを取得してください。false、0、""、NULL、および単に定義されていない変数の間には、いくつかの微妙な違いがあります。

于 2009-01-05T18:12:38.660 に答える
2

厳密なエラー モード (E_STRICT) で実行している場合、句は

if ($variable) {}

if ($variable != null) {}

これらの変数が初期化されていない場合、通知がスローされます。

Notice: Undefined variable: variable

uninitialized を使用するとセキュリティ上の脆弱性が生じる可能性があるため、これらの通知はコードに欠陥があることを示しています。(キーワード: register_globals)。

変数の存在をチェックするための私のお気に入りは

if (isset($variable)) {}

これは、変数が以前に使用されたかどうかをチェックします (読み取り: 値で初期化されました!= null)。

于 2009-01-05T21:39:07.167 に答える
2

私はSeanに同意しますが、それぞれが何をするのかを平易な英語で概説します:

if ($variable != NULL) {

$variableNULL未設定の場合となります。これは実質的にisset変数が未定義であることと同じです。

if (!empty($variable)) {

$variable通常、これは文字列 ( (string) $variable) が0 であるかどうかをチェックします。strlenただし、0以外の整数や空の配列と同様に、 をtrue返します。false何らかの理由で (これは間違っていると思います)$variable = '0';が返されtrueます。

if ($variable) {

この true/false チェックは、(boolean) $variable基本的に、変数がブール値に変換されたときに true を返すかどうかのように機能します。

これについて考える 1 つの方法は、反対の値を返すことを除いて、空と同じように動作することです。

(boolean) $variable(タイプ キャスティング/ジャグリング) の意味の詳細については、このマニュアル ページを参照してください。

(PHP 開発者: これは主にメモリによるものです。ここで間違っている場合は訂正してください!)

于 2009-01-05T18:29:50.077 に答える
1

関連する質問: PHP の弱い型付け: なぜ isset を使用するのですか?

基本的に、空の値、null 値、ゼロ、およびブール値を扱う場合は同じではありません。

于 2009-01-05T18:34:09.473 に答える