Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It makes sense for the same reason it makes sense in Perl: use a string as a number and you get the number that is at the start of the string. E.g., "12" == 12, and "12php" == 12.


But Perl has both "eq" and "==". PHP doesn't.


Perl recognises that it is a bad practice.

  perl -we ' print "true\n" if "12" == "12php"'
  Argument "12php" isn't numeric in numeric eq (==) at -e line 1.
  true

  perl -w -e 'my $foo = "12php"; $foo = $foo + 1; print $foo, "\n";'
  Argument "12php" isn't numeric in addition (+) at -e line 1.
  13
  
(an exception seems to be made for $foo++ though... that's Perl for you).


$foo++ isn't an exception. It has documented behavior on strings. That is sometimes very useful.


I meant it's an exception because it does not throw a warning, even though you are treating a string as a number. (This is contrary to $foo = $foo + 1). The DWIM string auto-increment doesn't even kick in unless the variable matches /^[a-z]/i.


That does not make sence that just meens both languages suck.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: