Ich habe mal wieder ein klassisches Beispiel für Probleme, die Auftreten können, wenn Variablen in einer Programmiersprache nicht sauber typisiert sind:
$x = 255; $y = 96; echo $x, ' OR ', $y, ' => ', ($x | $y);
Die beiden Variablen werden ODER-Verknüpft. Das Ergebnis ist wie zu erwarten…
255 OR 96 => 255
Was aber, wenn die beiden Werte bei der Zuweisung keine „Zahlen“, sondern Zeichenketten waren?
$x = '255'; $y = '96'; echo $x, ' OR ', $y, ' => ', ($x | $y);
Überraschung:
255 OR 96 => ;75
Und auf ein mal funktioniert der ansonsten durchdachteste Algorithmus nicht mehr. Deshalb lieber immer mit Typecast arbeiten:
$x = '255'; $y = '96'; echo $x, ' OR ', $y, ' => ', ((int) $x | (int) $y);