dedlfix: strings vergleichen - steh auf dem schlauch

Beitrag lesen

echo $begrüßung;

if(!$country_tmp==$res['countryname']) {
            $country_tmp=$res['countryname'];
Ich würde mal mit

if($country_tmp != $res['countryname'])

probieren

Die Begründung dazu lautet: ! hat eine höhere Priorität als ==

Und darum läuft es schief:

Erster Durchlauf: $country_tmp ist nicht initialisiert. Mal abgesehen von der Notice, dass es diese Variable nicht initialisiert wurde, die gekommen wäre, wenn das error_reporting auf E_ALL gestanden hätte, gibt ein Lesezugriff darauf NULL zurück. Durch die Negation (!) und eine automatische Typumwandlung von NULL nach false, ergibt !$country_tmp true. Das wird verglichen mit einem (hoffentlich existierenden) $res['countryname'] dessen Inhalt vermutlich nicht '' oder '0' ist, also true entspricht. Bedingung erfüllt, Durch die folgende Zuweisung erhält $country_temp enthält nun einen Wert, der als true interpretiert wird.

Die weiteren Durchläufe: !$country_tmp ergibt nun false, verglichen mit $res['countryname'], was als true gewertet wird, wird die Bedingung nicht erfüllt. Sie würde erst dann erfüllt werden, wenn $res['countryname'] '', '0', 0 oder NULL, also einen Wert, der als false interpretiert wird, beinhalten würde.

Da Pinky: Im Ausgangsposting fehlt übrigens eine Fehlerbeschreibung. Du schriebst zwar, was passieren soll, nicht jedoch was statt dessen passiert, und dazu die Angabe der genauen Fehlermeldung, so vorhanden. Passiert sein dürfte folgendes: Das erste Land wird angezeigt, die anderen dagegen nicht mehr.

echo "$verabschiedung $name";