Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP 7.4 string comparison

Can somebody explain why in the first example below the comparison is returning false?

In the second example, you can see that just changing the first character it will return true instead.

What am I missing?

(1 != "1f9bb589-434d-46ce-9b0d-fe101619ce6f") -> bool(false)

vs

(1 != "2f9bb589-434d-46ce-9b0d-fe101619ce6f") -> bool(true)
like image 956
s7a8m Avatar asked May 23 '26 05:05

s7a8m


1 Answers

The != operator performs a comparison with type juggling. Since the first operand is an int, the comparison is performed numerically, and the second operand is coerced to an int too. This means the first sequence of digits is taken and converted to an int, and everything after it is discarded. In the first example, the first sequence of digits is "1", so you get 1 != 1, which is obviously false. In the second example, you similarly get 1 != 2, which is obviously true.

like image 140
Mureinik Avatar answered May 25 '26 17:05

Mureinik