Bug #68761 [ReO->Csd]: filter_var(null) returns false with FILTER_NULL_ON_FAILURE
| From: | cmb@php.net | Date: | Wed, 29 Jul 2020 15:49:33 +0000 |
| Subject: | Bug #68761 [ReO->Csd]: filter_var(null) returns false with FILTER_NULL_ON_FAILURE | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-228278@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=68761&edit=1
ID: 68761
Updated by: cmb@php.net
Reported by: tonyli dot lives at gmail dot com
Summary: filter_var(null) returns false with
FILTER_NULL_ON_FAILURE
-Status: Re-Opened
+Status: Closed
Type: Bug
Package: Filter related
Operating System: Ubuntu 12.04
PHP Version: 5.5.20
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
> [â¦], since the documentation could be clarified regarding the
> string conversion.
Oh, that is already documented[1]:
| Note that scalar values are converted to string internally
| before they are filtered.
[1] <https://www.php.net/manual/en/function.filter-var.php>
Previous Comments:
------------------------------------------------------------------------
[2020-07-29 15:11:10] cmb@php.net
> Why is false returned for null?
Because the filter_*() functions are meant to operate on strings,
so values of other types are converted to string first; NULL is
converted to an empty string, and an empty string is supposed to
return FALSE with FILTER_NULL_ON_FAILURE.
Re-opening, since the documentation could be clarified regarding
the string conversion.
------------------------------------------------------------------------
[2020-07-29 14:09:32] rihards dot sceredins at creative dot gs
Hey,
It seems that the author of this bug report mixed "expected result" with "actual
result".
I just tried this on PHP 7.4.8 and output of the test script mentioned above is:
bool(false)
bool(false)
bool(true)
NULL
Why is false returned for null?
------------------------------------------------------------------------
[2016-09-26 14:47:10] cmb@php.net
That issue has been resolved as of PHP 5.4.8, see
<https://3v4l.org/cBDRY>.
------------------------------------------------------------------------
[2015-01-15 10:53:52] ppasindud at gmail dot com
Works correctly in php-src master
------------------------------------------------------------------------
[2015-01-06 22:17:55] tonyli dot lives at gmail dot com
Description:
------------
Even with the flag on, trying to filter null returns false when it should be still null (as null is
not a boolean).
As per the documentation:
If FILTER_NULL_ON_FAILURE is set, FALSE is returned only for "0", "false",
"off", "no", and "", and NULL is returned for all non-boolean values.
Similar to: https://bugs.php.net/bug.php?id=67167
Test script:
---------------
var_dump(filter_var(null, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var(false, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var('test', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Expected result:
----------------
bool(false)
bool(false)
bool(true)
NULL
Actual result:
--------------
NULL
bool(false)
bool(true)
NULL
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=68761&edit=1