If you’re trying to directly compare different variable types in any language without strong typing, you’re going to have edge-case results which you might not expect.
My “coding like a moron” message still stands. PHP isn’t a strongly typed language and it doesn’t tell you off for trying stupid stuff like comparing a string with an int. Nor do other languages like JavaScript.
I just tested these out out of curiosity.
0==“text” returns false in PHP 8.2 as I’d expect.
The others make sense in the way that php juggles between types. An empty variable can type-juggle to null, but an array can’t be directly compared with a string.
(Although you wouldn’t really want to compare an array with a string, PHP just treats an array as greater than other variables. So weirdly, ([] > “”) == true.)