同じ出力が生成されない理由はif ($str == "")ありますか?if (empty($str))
5 に答える
$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。
$str = "0";
例えば。この素晴らしいドキュメントを参照してください。
はい。$strと等しい場合は"0"thenempty($str)が返されTRUE、$str == ""は が返されFALSEます。
マニュアルページを参照してください: http://www.php.net/manual/en/function.empty.php
$str == ""empty($str)次の $str の値を除いて、すべて true になります。
"0"(文字列として 0)array()(空の配列)
emptyは== false(存在しない変数に対してエラーを発生させずに) と同じです。タイプ比較表を参照する"0"と、そのことがわかり、array()比較が異なります。