Edit report at http://bugs.php.net/bug.php?id=50809&edit=1
ID: 50809 Updated by: [email protected] 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] [email protected] 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] [email protected] 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
