dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Typen und Funktionen

Was muss ich bei der automatischen Typ-Konvertierung beachten?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

PHP konvertiert Typen für manche Funktionen, ohne dass der Programmierer darauf Einfluss nehmen kann. Hier ein Beispiel, wie der Stringvergleich mit strcmp() intern funktioniert:

  wenn is_numeric($a) und is_numeric($b),
  dann vergleiche $a und $b als Zahlen, auch wenn die Variablen
  den Typ String haben (und kein Cast der Welt kann das verhindern),
    dabei verwende BC-Math wenn notwendig und vorhanden,
    sonst float
    sonst integer
  sonst
    mache einen Stringvergleich wie jedermann erwartet haette.

Also ist

kk@kris:~/Source/php4/Zend> php
 $b)
    echo "stringvergleich\n";
  else
    echo "numerischer vergleich\n";
?>
a ist string
b ist string
numerischer vergleich

Das ist nicht zu ändern. $a und $b sind Strings und werden als Zahlen verglichen, weil sie wie welche aussehen, und man kann es nicht verhindern, noch kann man die Zahldarstellung wählen, in der verglichen wird. Will man einen Stringvergleich erzwingen, muss man schreiben:

kk@kris:~/Source/php4/Zend> php
 "x$b")
    echo "stringvergleich\n";
  else
    echo "numerischer vergleich\n";
?>
a ist string
b ist string
stringvergleich

Hier bewirken die führenden Buchstaben x, dass die Konvertierung in Zahldarstellung fehlschlägt und ein Stringvergleich wird erzwungen.

Was muss ich bei der automatischen Typ-Konvertierung beachten?
http://www.php-faq.de/q-typ-konvertierung.html
 

Login