-1

同じ出力が生成されない理由はif ($str == "")ありますか?if (empty($str))

4

5 に答える 5

4

$str == ""に対してTRUEを返します

  • $str = "";
  • $str = false;
  • $str = NULL;
  • $str = 0;
  • $str = 0.0;

$str == ""に対して FALSE を返します。

  • $str = "0";
  • $str = array();

注: 未定義の変数に対しても TRUE を返しますが、これは警告です。

一方、empty($str)上記のすべてのケース (未定義の変数を含む) では、警告なしで TRUE になります。

この違いの理由は、関数emptyが空の文字列だけでなく、空の変数 (配列や数値などの任意の型) をテストすることを目的としているためです。

*: PHP は文字列に格納された数値に満足しているかもしれませんが、必要に応じて値を変換するだけecho "1" + 2です3。そして、それが のempty($str)場合に TRUE を返すの$str = "0"は、それが空の文字列であるからではなく (そうではない)、空の数値だからです。

文字列が空かどうかをテストするには、 または のいずれ$str === ''かを使用することを強くお勧めしますstrlen($str) === 0

于 2012-09-30T05:54:45.330 に答える
2

$str = "0"; 例えば。この素晴らしいドキュメントを参照してください。

于 2012-09-30T05:42:50.423 に答える
2

はい。$strと等しい場合は"0"thenempty($str)が返されTRUE$str == ""は が返されFALSEます。

マニュアルページを参照してください: http://www.php.net/manual/en/function.empty.php

于 2012-09-30T05:45:53.110 に答える
2

$str == ""empty($str)次の $str の値を除いて、すべて true になります。

  • "0"(文字列として 0)
  • array()(空の配列)
于 2012-09-30T05:44:32.417 に答える
1

empty== false(存在しない変数に対してエラーを発生させずに) と同じです。タイプ比較表を参照する"0"と、そのことがわかり、array()比較が異なります。

于 2012-09-30T05:44:05.347 に答える