Mit 0 vergleichen

Hallo zusammen,
wenn ich einer Variable 0 zuweise und sie danach darauf prüfen will, warum muss dies mit dem === Operator und nicht mit dem == Operator geschehen. Beispiel:

$size = getimagesize(...);
 if($size[0] > $size[1])
  $format = 0;
 
 
 echo '<div id="single_photo">';
 
 if($format === 0) //hier funktioniert der == Operator nicht! Warum?
 

Vielen Dank
lg, freakXHTML

Mit === wird auch der Variablentyp verglichen, also z.B. String, Integer etc. Siehe:
PHP: Vergleichs-Operatoren - Manual

In deinem Fall sollte es genügen den Zahlenwert auch als Integerwert mit der 0 zu vergleichen. Also:
[php]if( (int)$format == 0 ){}[/php]

warum kann ich aber bool Werte nicht mit == vergleichen, sondern nur int WErte?

Zeige mal den ganzen Code, den format ist nicht immer definiert in deinem Beispiel.

In dem Fall tritt eine Typkonvertierung in Kraft, ich kenne die regeln von PHP aber nicht. In dem Fall ist es sowieso sinnvoller statt eines Vergleiches auf wahr/unwahr zu testen:

if($format) oder if(!$format) damit gibt es weniger Probleme und ist leichter lesbar (Wenn man das Ausrufezeichen als ‚not‘ oder ‚nicht‘ liest).

Das dürfte hier der Punkt sein.

[php]// $format undefiniert (<=> $format = null;)

var_dump($format == 0); // bool(true)
var_dump($format === 0); // bool(false)

// $format definiert
$format = 0;

var_dump($format == 0); // bool(true)
var_dump($format === 0); // bool(true)[/php]

Es gibt nicht mehr Code, der wichtig wäre. Ich denke, es liegt wohl daran, dass $format manchmal nicht definiert ist. Danke für eure Hilfe.

lg, freakXHTML

Sinnvoll wäre es hier gewesen, $format unmittelbar aus dem Vergleich zu erstellen:

[php]$format= !($size[0] > $size[1]);[/php]
und dann eben später if($format) …