"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: Vergleich zweier Strings

fagø 16.02.2004 - 23:02 510 2
Posts

fagø

Big d00d
Avatar
Registered: Apr 2002
Location: Einöde
Posts: 271
ich dachte php ändert den typ automatisch auf int um, wenn benötigt, also hab ich folgendes geschrieben:

Code: PHP
if( $id < $elem[2] )

beide variablen sind strings, die zahlen enthalten. das hat so auch funktoniert, nur das seltsame war dann, in einem fall nicht!

ich hab mir dann über echo alles ausgeben lassen, da ich den fehler nicht verstanden habe, und php hat
Zitat
3<3
als logisch 1 ausgewertet :eek:

die selbe situation mit
Code: PHP
if((int)$id < (int)$elem[2])
funktioniert jedoch auch in diesem fall.

ok, wenn php die strings doch nicht umwandelt (vielleicht hat < für strings auch irgendeine bedeutung?), dann verstehe ich nicht warum die selbe bedingung in 2/3 fällen doch funktioniert hat und weshalb
Code: PHP
if( $id > $elem[2] )
5 Zeilen weiter oben immer funktioniert :eek: :confused:

wäre toll, wenn mir wer erklären könnte was hier vorgeht..

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
bei mir funktionierts typejuggling einwnadfrei
Code: PHP
<?
var_dump("3"<"3");
var_dump(3<"3");
var_dump("3"<3);
var_dump(3<3);
var_dump( "3 "< "3");
var_dump( " 3"< "3");
var_dump( 3< " 3 ");
?>

output:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)

versuchs mal mit var_dump zu "debuggen"
also welche werte die vars wirklich haben und was das ergebniss wirklich ist bevors if als true/false interpretiert

fagø

Big d00d
Avatar
Registered: Apr 2002
Location: Einöde
Posts: 271
vielen dank, das hit mir geholfen :)

ich hab folgendes verglichen:
string(1) "3" string(3) "3 "

bei letzeren hat sich noch ein \n hinzugeschlichen..
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz