I am not able to get it that why the statement gets true both the times.?
$hello="foo";
if($hello<=6){
echo "yes
";
}
if ($hello>=0) {
echo "ohh yess!";
}
it outputs
yes
ohh yess!
I do know this is illegal comparison between integer and string,but why after all it gets true.
As the PHP manual says:
The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero).
In this case, the string foo
evaluates to zero when the comparison is done and both the if
conditions will hence evaluate to TRUE
.
Effectively, you'll be doing:
if(0 <= 6) {
echo "yes
";
}
if (0 >= 0) {
echo "ohh yess!";
}
Use ===
operator if you want to make sure the variable types are also taken into consideration.
Currently it is checking if $hello exist
and in both cases it is true.May be you want this
$hello="foo";
if(strlen($hello)<=6){
echo "yes
";
}
if (strlen($hello)>=0) {
echo "ohh yess!";
}
This is because of type juggling in PHP. So "foo"
evaluates to zero because it is converted to an integer. If you use the the identical operator (===
) type conversions are not done so "foo"
is treated a literal string and your statement will then evaluate to false.