I keep seeing variations of this:
Not equal
!=
Not equal, equal
!==
Which one is the standard or do they have different meanings?
I am guessing the latter also checks the value and the name if it's a string, while the former might just check the value only...
== and != check equality by value, and in PHP you can compare different types in which certain values are said to be equivalent.
For example, "" == 0 evaluates to true, even though one is a string and the other an integer.
=== and !== check the type as well as the value.
So, "" === 0 will evaluate to false.
Edit: To add another example of how this "type-juggling" may catch you out, try this:
var_dump("123abc" == 123);
Gives bool(true)!
The second one is type-strict.
"1" != 1; // false
"1" !== 1; // true because the first is a string, the second is a number
!= not equal by value
!== not equal by value and type
in an example:
"2" == 2 -> true
"2" === 2 -> false
"2" !== 2 -> true
"2" != 2 -> false
this is also important when you use certain function that can return 0 or false
for example strpos: you want always to check types too there, not only values. because 0 == false but 0 !== false.
since strpos can return 0 if a string is at the first position. but that not the same as false, which means the string has not been found.
加载中,请稍侯......
精彩评论