同じ出力が生成されない理由は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()
比較が異なります。