Re: [PHP] PHP is Zero
[email protected] ("georg")
| Newsgroups | php.general |
|---|---|
| Message-ID | <767B2B477BF74AED971B24D4EACE6642@guscha> |
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" <[email protected]> > To: <[email protected]> > Sent: Thursday, June 13, 2013 9:59 AM > Subject: [PHP] PHP is Zero > > >> Hi 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 >> >