Mailinglisten-Archive |
Oliver Kummerow wrote: > > Ein paar Demos, wie man recht schön in die Pfütze fallen kann: nun, diese sachen scheinen mir zum grossteil theoretisch, wenn auch dennoch aergerlich. wobei ich jedoch letztens auf die nase gefallen bin, ohne gezielt auf einen fehler hinzuarbeiten, ist jenes: $min_y=500; $sql_query=mysql_query("SELECT max(yaxis) FROM ".$table." ".$sql_where_order); $row=mysql_fetch_row($sql_query); $maxval=max($row[0],$min_y); die spalte yaxis ist als float definiert, also kein string von sich aus. das maximum der spalte betrug 92.4 oder so. trotzalledem kam als max() immer 92.4 heraus, obwohl meinen mathematischen kenntnissen nach 500 nicht unerheblich groesser als 92.4 ist. die loesung (scheinbar) ist, dass php in diesem fall keine typkonvertierung richtung double vornimmt, sondern das ganze wie strings vergleicht. und dort ist nun mal ein string, der mit 9 beginnt, weiter hinten als ein string, der mit 5 beginnt... vergleiche max("ab","bc"); und aehnliches. dabei kommt immer der alphabetisch hintere wert raus. loesung meines problems war es dann $maxval=max((double)$row[0],$min_y); zu berechnen, damit funktionierte es dann wie erwartet. ein entsprechender bugreport ist raus. gruss, markus
php::bar PHP Wiki - Listenarchive