ブール値の検証にfilter_var
を使用していますが、FALSE
を認識できないとは思わなかったです。なぜこれが起こるのですか?filter_varを使用したPHP検証ブール
filter_var(FALSE, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
戻り
null
ブール値の検証にfilter_var
を使用していますが、FALSE
を認識できないとは思わなかったです。なぜこれが起こるのですか?filter_varを使用したPHP検証ブール
filter_var(FALSE, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
戻り
null
filter_var
は、PHP 5.2のように、新しいです。あなたは既知のバグに遭遇しました:https://bugs.php.net/bug.php?id=49510 このバグに投票したりコメントしたりしてください。あなたはこのような何かをしようとしている
:
$v = filter_var($v, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
を、このような安価な回避策がいくつかあります:
$v = $v===FALSE ? FALSE : filter_var($v, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
これは、動作するようになっていますどのように実際にあるようですね、奇妙なことに十分に(はい、私の心はそれによって吹かれました)。 https://bugs.php.net/bug.php?id=51344
から、これは根本的な フィルタコードを見てきましたときに非常識な音に起こっているが、これは マニュアルに従って、実際に正しい:filter_inputのデフォルトの動作()のため NULLを返すことです検証に失敗した場合はfalseを返します。 FILTER_NULL_ON_FAILUREは、存在しない入力が の場合はその動作をfalseに単純に反転し、検証に失敗するとNULLを返します。 (いいえ、私は が役に立ちませんが、それは役立つかもしれませんし、filter_input()コンテキストでフラフの名前は です。なぜなら、それはNULLが通常返されないことを意味するからです。存在しない入力ケースを持っていない にfilter_var()で使用感。)
[テーブルが原因で省略SOの書式設定]
私はfilter_inputにコメントをポップます()とfilter_input_array() コードは のように見えますが、これは仕様であることに注意してください。
閉じることはできません。
filter_var
が最初のバージョン5.2で導入され、5.4の後にいくつかの時点で解決されたとき、これは何が起こるかであるバージョン5.4から始まって、このhttps://3v4l.org/Cv1MZ
で見られるようにこれが動作した:
var_dump(filter_var(FALSE, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
これMAK
ブール値(false)を
もっと意味がある。
bool FALSEを検証しますか? – rcs20
これを読んでください:http://www.devshed。PHP/PHP/5/1/ – rcs20
の場合、TRUEがTRUEを返しますが、FALSEを返すのはなぜでしょうか? nullを返します。 – RS7