Tach!
für das php-diagramm benötige ich folgende Form:
$datay1 = array(20,7,1.6,46,1,5,7,usw.);
Warum erst ein Array erstellen? Wenn Du was auszugeben hast, dann doch gleich an der richtigen Stelle, nutze eine Callbackfunktion,
Das geht hier aus seinem Quasi-Doppelpost nicht hervor, aber er will die Daten einer Diagrammerstellungssoftware übergeben. Eine Ausgabe steht also nicht unmittelbar an und das Array ist notwendig. Statt eines Arrays könnte er jedoch in einer Klasse das Iterator- oder/und IteratorAggregate-Interface implementieren, falls die Diagrammsoftware nicht (nur) fest auf is_array() prüft. Dazu muss er aber den gesamten Rest der Abfrage auf OOP umstellen und der Implementierungsauwand des Interfaces ist auch deutlich höher als ein Array erstellender Dreizeiler. Ob dieser Aufwand gerechtfertigt ist?
while($r = mysql_fetch_assoc($res)){
if(isset($r)){
$this->callback($r);
}
}
Deine Lösung ist auch kein Callback sondern ein ganz normaler fest verdrahteter Methodenaufruf. Callbacks heißen so, weil man einem ausführenden Code den Verweis auf eine zur Laufzeit definierten oder jedenfalls prinzipiell auswechselbaren Methode oder Funktion übergibt. Ein Callback ist also etwas, das zwar vom ausführenden Code benutzt wird aber nicht unter dessen Einfluss steht.
Das was du da in OOP erstellt hast, nutzt dessen Vorteile nicht aus. Es ist im Grunde genommen nur prozedurale Programmierung in eine Klasse gebracht. Die beim OP (wenn auch vielleicht unbeabsichtigt, aber durch die Diagrammsoftware erzwungene) vorhandene Trennung nach Datenbeschaffung und Verarbeitung hast du auch wieder aufgelöst.
Und zu guter Letzt ist das if-isset völlig nutzlos. mysql_fetch_assoc() liefert immer ein Ergebnis, bei dem isset() true ergibt. Selbst eine Prüfung, auf nicht false ist sinnlos, weil der Körper der While-Schleife gleich gar nicht ausgeführt, wenn das der Fall ist.
dedlfix.