Wie geht das denn?

Hi Gemeinde,

ich steh hier irgendwie grade vor einem Rätsel…
Folgende drei Zeilen Code sind der Knackpunkt:

 echo $iid;
 if ($iid == "set") $iid = getlastinsert();
 echo $iid;

das erste echo gibt mir nämlich 0 aus.
0 ist für mich nicht == „set“ trotzdem wird die Funktion aufgerufen und beim zweiten echo ist $iid = 8 (die Rückgabe aus der eigentlich nicht aufgerufenen Funktion)

Wie kann das sein? Ich kann keinen Fehler finden…

Danke schon mal
Munich

Folgende drei Zeilen Code sind der Knackpunkt:

echo $iid;
if ($iid == „set“) $iid = getlastinsert();
echo $iid;

das erste echo gibt mir nämlich 0 aus.
0 ist für mich nicht == „set“ trotzdem wird die Funktion
aufgerufen und beim zweiten echo ist $iid = 8 (die Rückgabe
aus der eigentlich nicht aufgerufenen Funktion)

also php is ja da eignetlich ganz nett im umgang mit verschiedenen datentypen; aber versuchst du gerade einen integer mit einem string zu vergleichen? böse böse! :smile:

hab mal getestet.

$a="set";
$b=0;
//$b="$b";
if ($b==$a)
{
 echo "ja";
}

es kommt tatsächlich als ausgabe: ja

wenn ich allerdings die 3. zeile wieder einkommentiere und aus der 0 sozusagen „0“ (einen string mache), dann gibt er mir nicht mehr ja aus!

versuch das mal!

mfg
Geisterkarle

ich habs inzwischen anders gelöst
„set“ ist bei mir der einzige Wert, der nicht numerisch sein kann, drum hab ich einfach ein !is_numeric verwendet…
geht auch :smile:

also php is ja da eignetlich ganz nett im umgang mit
verschiedenen datentypen; aber versuchst du gerade einen
integer mit einem string zu vergleichen? böse böse! :smile:

hmja, wie soll ich das sagen *g*? ja ^^
aber ich hab error_reporting auf all gesetzt… Müsste dann nicht wenigstens eine fehlermeldung erscheinen?

hab mal getestet.

$a=„set“;
$b=0;
//$b="$b";
if ($b==$a)
{
echo „ja“;
}

es kommt tatsächlich als ausgabe: ja

wenn ich allerdings die 3. zeile wieder einkommentiere und aus
der 0 sozusagen „0“ (einen string mache), dann gibt er mir
nicht mehr ja aus!

vielen Dank für den Tipp.
Aber ist das nicht ein Bug?
Weil „set“ ist doch sicher nicht 0… das muss der doch auch erkennen, oder?
Oder spielt da gerade true/false mit rein?