I've thought about this for a long time -- and a lot lately since I've been doing mostly Java and ASP.NET to earn my bread in the last six months.
One of the most controversial features of languages such as PHP and Perl is the lax evaluation of boolean values, if you write print $a ? "True" : "False"; You'll find that many different things evaluate false such as integer and float zero, the empty string, an empty array, a null, etc. Often this is a convenient behavior. For instance, if a function returns an empty array, it's often reasonable to interpret this as a failure, or a false value. C++ and Java programmers express a lot of anxiety that programs written this way will have lots of problems. My experience is that, coding in PHP, I run into a boolean problem once every couple of weeks. On the other hand, I find that I run into trouble with boolean values much more often when working in Java or C# -- the "false" value is different in every situation, so I need to think about every if() I write and I sometimes make a decision that's wrong in a subtle way -- no wonder why they worry. In PHP, however, you do end up with a "==" operator that's a little too permissive that thinks that "0"==false and also that "0"="" (empty string). That is a PITB when you're searching for a substring which might be at the start of the string (position 0) or not in the string at all (false). Then you need to use the "===" operator which is a little stricter than people often want -- the language probably could have been better designed. _______________________________________________ New York PHP Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk NYPHPCon 2006 Presentations Online http://www.nyphpcon.com Show Your Participation in New York PHP http://www.nyphp.org/show_participation.php
