Edit report at https://bugs.php.net/bug.php?id=39579&edit=1
ID: 39579 Comment by: radamanf at gmail dot com Reported by: iain at workingsoftware dot com dot au Summary: Comparing zero & string values in boolean comparison has unexpected behaviour Status: Not a bug Type: Bug Package: Variables related Operating System: FreeBSD 6.1 PHP Version: 5.2.0 Block user comment: N Private report: N New Comment: I've seen a topic in the web: http://josephscott.org/archives/2012/03/why-php-strings-equal-zero/ related to this bug, and I can see that sometimes string need to be compared with integer as integer BUT this is a huge pool of potential bugs across all the worldwide! :) Can you imagine how many people usign PHP without realizing this BUG ! :)_) I'm sure this is a loved BUG by most hackers out there ! Previous Comments: ------------------------------------------------------------------------ [2013-02-14 17:24:51] ni...@php.net @radamanf: Stop shouting. Shouting does not help. I agree that this behavior ('foo' == 0) is counter-productive. I think most people would agree on that. But even if everyone agrees that it's the wrong behavior, changing it isn't so easy. Changing this behavior will probably break existing software. If you really want to change this, then there is only one way: Make the change and then test a shitload of code against it. See how many tests will fail in major PHP projects and how easy things are to fix. If you can provide sufficient data that this change (which goes rather deep into the core semantics of the language) won't affect existing projects heavily, then I see no problem with doing it. ------------------------------------------------------------------------ [2013-02-14 17:14:35] radamanf at gmail dot com Related To: Bug #39579 ------------------------------------------------------------------------ [2013-02-14 17:14:35] radamanf at gmail dot com This is a epic FAIL in pure logic of comparing formats not having explicitly defining them, whole beauty of PHP disappear! This is BROKEN LOGIC. Connected BUGS Bug #44990 Bug #39579 Different people are coming across this BUG and thinking the same as me, so please CHANGE your documentation, it's WRONG! Who is this "GENIES" to make possible converting String to Integer NOT INT TO STRING! Guys, I'm very disappointed! :) ------------------------------------------------------------------------ [2012-08-01 10:31:16] v dot picture at free dot fr Hi, I'm wondering why this comparison should be evaluated in a numeric context and not a string context, after all there is no loss with string casting whereas there is a huge risk of doing mistakes with numeric casting: (string) 0 => "0" (string) 42.5 => "42.5" (int) "test" => 0 But ok, let's say it's a normal behavior. "If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number" Then why would PHP decide to do that in a string context ? I mean, when I compare two strings I don't expect PHP to convert everything to numbers ! "10" == "1e1" => true Sorry folks, this really seems like a string context to me. ------------------------------------------------------------------------ [2006-11-22 11:36:19] m...@php.net It's not a problem -- it's a feature, and it's documented at the address I've just quoted, which describes evaluation of a string in any numeric context. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=39579 -- Edit this bug report at https://bugs.php.net/bug.php?id=39579&edit=1