Req #50809 [Opn->Wfx]: empty(), isset() not helpful - need better alternative
Edit report at http://bugs.php.net/bug.php?id=50809&edit=1
ID: 50809
Updated by: jani@php.net
Reported by: seanr at webolutionary dot com
Summary: empty(), isset() not helpful - need better
alternative
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: *General Issues
Operating System: all
PHP Version: 5.3.2RC1
Block user comment: N
Private report: N
New Comment:
See the comments.
Previous Comments:
------------------------------------------------------------------------
[2010-01-21 12:28:32] colder@php.net
equivalence is not transitive: var_dump("a" == 0, 0 == "b", "a" ==
"b").
empty is simply awkwardly named. empty($v) is simply equivalent to
!isset($v) || !$v.
------------------------------------------------------------------------
[2010-01-20 21:47:56] degeberg@php.net
Anything that when cast to boolean is false is regarded as empty.
Seeing as false==0 and 0=="0" then false=="0" because equivalence is
transitive. So if false is empty, then "0" is empty because false=="0".
If you want to check that a string's length is non-zero you can use
strlen().
------------------------------------------------------------------------
[2010-01-20 20:15:02] seanr at webolutionary dot com
Description:
------------
If the value is a string of "0", than it's not a true zero right? The
behavior of empty() in this case is utterly absurd. If you can't fix
empty, there needs to be a new function to provide a better way to
test on this than writing our own special functions to work around a
PHP bug.
$a = 0;
$b = '';
$b = '0'
empty($a) returns true (correctly, but not helpfully)
empty($b) returns true (correctly)
empty($a) returns true (incorrectly, since it actually does have a
value)
Of course, isset() returns true for all three (correctly, but not
helpfully). This means there's no way to find out that $a and $c have
values I can use and $b doesn't without writing my own special
function or if statement. EXTREMELY frustrating.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50809&edit=1
Thread (4 messages)