I stumbled upon a very strange bit of PHP code. Could someone explain why this is happening? *****BONUS POINTS***** if you can tell my why this is useful.
<?php
if(0=='a'){
print ord(0)." should NEVER equal ".ord('a')."<br>";
}
if(false==0){
print "false==0<br>";
}
if('a'==false){
print "a==false<br>";
}
?>
And the resulting output:
48 should NEVER equal 97
false==0
In PHP, ‘a’ is not the ASCII character a, but the string a. In a numeric context, it is equal to 0. For instance
intval('a')results in a value of0.This is useful because PHP is primarily used for processing text, and one might want to try the test (123 == ‘123’), which is true. And given that a number in single (or double) quotation marks is treated as the number, it doesn’t make sense for a string with no numeric value to be treated as anything other than 0.
Oh yeah, one more thing. ‘a’ in a boolean context is true, not false. I believe this makes some types of text processing more natural, but I honestly can’t think of an example at this late hour.