If-Statement immer true?

Hallo zusammen
Ich habe folgenden PHP-Code auf einem anderen Server (hier gekürzte Version):

$zeile = 'x';
$debug = '';

foreach ($platzres_arr_alphab as $zeile_arr)
{
  $debug .= 'v:'.$zeile.'; ';		
		if ($zeile == 'x')
		{
                   $zeile = 0; 
                   $debug.='x; ';
                }	
		else
		{
                   $zeile = $zeile+16;
                   $debug.='16; ';
                 }
  $debug .= 'n:'.$zeile.';  ';		
}

Beim ersten Mal soll $zeile auf 0 gesetzt werden, die weiteren Male jeweils 16 dazugezählt werden.
Nun gibt mir $debug aber folgendes aus:

Der Anfang (v:x; x; n:0;) ist logisch: $zeile ist ‚x‘, also wird der x-Teil ausgeführt (if-Statement true) und $zeile=0 gesetzt.
Nun kommt der Punkt, an dem ich glaube, PHP will mich vera***schen:
v:0; x; n:0;
Obwohl er ausdrücklich sagt, $zeile sei =0 und nicht =‚x‘, erachtet er das if-Statement trotzdem als true!
Seltsamerweise ändert es nichts, wenn ich anstatt ‚x‘ z.B. ‚bla‘ nehme, oder wenn ich das ganze mit if ($zeile != ‚x‘) umkehre…
Bin ich doof, habe ich einen Denkfehler gemacht, oder spinnt einfach PHP…? :astonished:
Vielen Dank schonmal…

Stichwort: Automatische Typkonvertierung.

php.net/manual/en/language.t … ggling.php

ach so, so etwas habe ich mir schon gedacht…
aber ich hatte irgendwie im Kopf, dass es bis jetzt immer auch so gut gegangen ist… :unamused:
habs jetzt durch

ersetzt, das scheint soweit zu funktionieren…
Vielen Dank für den Denkanstoss :wink: