Tom: 0 = Text?

Beitrag lesen

Hello,

Das ist ein Fall, in dem das Autotyping von PHP an seine Grenzen stoesst.
Dadurch, dass einer der beiden Werte eine Zahl ist (0), wird der andere
Wert auch in eine Zahl umgewandelt. Und die Umwandlung von 'bla' in eine
Zahl ergibt? Ja, genau, 0, weil keine Zahl vorhanden ist. Wenn du
stattdessen strcmp verwendest, duerftest du das Problem umgehen koennen.

Nein, die automatische Typumwandlung arbeitet ganz exact.

Aber es gibt einen Unterschied zwischen:

<?php   ### typumwandlung.php ###

$blah = ' ';
$blah_0 = '0';
$blah_t = 'ich bins';

$ok = ('0' == $blah);
$ok_0 = ('0' == $blah_0);
$ok_t = ('0' == $blah_t);

echo "$ok: $ok<br>";
echo "$ok_0: $ok_0<br>";
echo "$ok_t: $ok_t<br>";

?>

und

<?php   ### typumwandlung.php ###

$blah = ' ';
$blah_0 = '0';
$blah_t = 'ich bins';

$ok = (0 == $blah);
$ok_0 = (0 == $blah_0);
$ok_t = (0 == $blah_t);

echo "$ok: $ok<br>";
echo "$ok_0: $ok_0<br>";
echo "$ok_t: $ok_t<br>";

?>

Der Ergebnistyp und der Vergleichstyp werden immer von der linken Seite Bestimmt.

Wenn man also einen Vergleich auf String anfordert, werden auch die Stringäquivalente verglichen. Wenn man einen numerischen Vergleich anfordert, werden die numerischen Äquivalente vergleichen.

Wenn man das Ergebnis erzwingen will, muss man zur Sicherheit casten.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau