Originariamente inviato da drAlberT
l'operatore di contronto si aspetta numeri
beh, non sempre ... diciamo che "normalizza" il confronto.

$a = "a";
exit("".(++$a)); // b


$a = "a";
$b = "123";
exit("".($a > $b)); // 1 <== true


$a = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
$b = "b";
exit("".($a > $b)); // false, compara solo il primo carattere


nel caso di stringhe contenenti numeri fa comunque un casting implicito, ma con le stringhe capitano anche cose "strane" ..

$a = chr(255);
exit("".ord($a++)." <= ".ord(++$a)); // 255 <= 255

ergo a mio avviso, confondere numeri e stringhe non è comunque una best practice nemmeno con i linguaggi di scriptings quindi trovo corretta l'osservazione di luca