Re: PHP is Zero
| From: | georg | Date: | Thu, 13 Jun 2013 08:35:21 +0000 |
| Subject: | Re: PHP is Zero | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-321380@lists.php.net to get a copy of this message | ||
Sorry missed to post list as well
Hi Daniel, here is wild goose i assume you have 3 x = in your "problem" formulation which could possibly result in the akward standard C mixup; the rightmost = first parsed and resulting in an ASSIGMENT to the variable with that value, the comes the parsing of == which is the equivalence test, and see; the variable is the same since it was just assigned that value; if this theory is correct you would get TRUE regardless what number is following :) /g ----- Original Message ----- From: "BUSCHKE Daniel" <Daniel.BUSCHKE@nextiraone.eu> To: <php-general@lists.php.net> Sent: Thursday, June 13, 2013 9:59 AM Subject: [PHP] PHP is ZeroHi all, I want to start a discussion about a PHP behaviour that drives me crazy for years. For the beginning I would like you to guess what the result of the following snippet will be: var_dump('PHP' == 0); I know the difference of == and === but the result was unexcpected for me. And I hope it is also for you. The result is simply "true". Why is it true? I guess this happens because of the conversion from 'PHP' to a number which will be 0 in PHP. And of course 0 equals 0. There are several points that I just want to drop into this mailinglist to discuss about: 1. Why? :) 2. Why is PHP converting the String into a Number instead of converting the Number into a String? (If my guess concerning the behaviour is correct) 3. Why is PHP throwing data away which has the developer explicit given to the interpreter? 4. Why does var_dump(0 == 'PHP'); has the same result as the snippet above? This meens that the equal operator is not explictly implemented in the string or integer? 5. Thats a bug I have opend: https://bugs.php.net/bug.php?id=51739 where I also had the same problems because "8315e839da08e2a7afe6dd12ec58245d" was converted into float(INF) by throwing everything starting from "da08.." away. I am using PHP since the year 2000. This means I have 13 years of experience in PHP and I really would like you to NOT just answer "works as designed". I know it works as designed but I want to discuss the design. Also I know that the "fuzzy" behaviour of type conversion is a main feature of PHP. I guess this is one point which makes PHP that successfull. But - in my opinion - the described behaviour is to fuzzy and just confuses developers. Best Regards Daniel Buschke -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php