Immobilienscout API - Verständnisproblem zurückgelieferte Objekte

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe gerade ein kleines Verständnisproblem bei dem ich nicht weiterkomme.

Also folgendes Objekt wird von $value->courtageInfo zurückgeliefert:
Code:
Courtage Object
(
    [hasCourtage] => 1
    [courtage] => 2,38 Nettomonatsmieten inkl. Mwst
    [courtageDescription] =>
)

Wenn ich also $value->courtageInfo->hasCourtage ausgebe erhalte ich die Zahl 1 ausgegeben.

Jetzt möchte ich das ganze prüfen ob hier 1 oder was anderes steht.
Also mache ich folgendes:
PHP:
if($value->courtageInfo->hasCourtage == 1) {
		echo "Provision wird verlangt";
	}
Hier liefert mir das Script richtigerweise den Text aus weil if = wahr ist.
Ändere ich jetzt o.g. Quellcode und prüfe auf die Zahl 2 - also so:
PHP:
if($value->courtageInfo->hasCourtage == 2) {
		echo "Provision wird verlangt";
	}
Dann wird auch der Text ausgegeben - also if = wieder wahr obwohl eigentlich falsch!

Woran liegt das?
Vielen Dank für eure Hilfe im Voraus!
 
Zuletzt bearbeitet:
Hi,

hasCourtage ist ein Flag (Typ boolean), d.h. es nimmt die Werte true oder false an.
Beim Ausgeben eines Boolean mit var_dump oder print wird dieser nach 1, wenn TRUE und 0 wenn FALSE umgewandelt.

Um abzufragen, ob eine Provision verlangt wird, benutzt Du daher:
PHP:
if($value->courtageInfo->hasCourtage) {
        echo "Provision wird verlangt";
    }

Das mit dem
PHP:
if ($value->courtageInfo->hasCourtage == 2)
kommt daher, dass die Zahl 2 nach Boolean umgewandelt wird.
Jede Zahl <> 0 wird automatisch TRUE, und daher wird aus dem obigen Ausdruck:
PHP:
if ($value->courtageInfo->hasCourtage == TRUE)
was ja wiederum wahr ist.

Den gleichen Effekt bekommst Du mit diesem Skript:
PHP:
$a=true;
print "a = $a<br>";
if ($a==2) print "true";
Die Ausgabe ist:
PHP:
a = 1
true

Siehe dazu auch hier: http://at2.php.net/manual/de/language.types.boolean.php
 
Zurück