Moin!
Laut Doku gibt es keinen meßbaren Unterschied zwischen numerischen und assoziativen Arrays.
Wie ich gerade nachgelesen habe, bezieht sich diese Aussage auf den Unterschied zwischen fetch_row und fetch_array.
Unterschied in was? - Performance? - Speicher? - Glaube kaum, dass ein assoziatives Array weniger oder gleich viel Speicher verbraucht, als ein Nummerisches.
Nein, sicherlich wird es mehr Speicher verbrauchen. Aber da in PHP das Handling von numerischen und assoziativen Arrays gleich ist, ist es für die Zugriffsgeschwindigkeit egal, ob ein Zugriff auf einen numerischen Index 2 oder einen String-Index "name" geschieht. Der Unterschied ist hierbei lediglich, dass mal mehr, mal weniger Bytes für den Index gespeichert werden müssen.
Bedenke nämlich, dass es, im Gegensatz zu Perl, problemlos möglich ist, beide Indextypen in einem Array zu mischen. Allein das kann nur funktionieren, wenn intern kein großer Unterschied gemacht wird (und ich vermute, die numerischen Indices werden einfach zu Strings gemacht).
Bei der Performance ist es gut möglich, dass der Unterschied nicht messbar ist. Natürlich ist dies noch lange kein Grund auf die selbsterklärenden assoziativen Indexe zu verzichten, da gebe ich dir recht.
Du wirst bei der Abfrage einer Datenbank doch bitte nicht mit Speicherauslastung argumentieren wollen! Da hat ein einzelnes mysql_fetch_assoc oder mysql_fetch_row nämlich den geringsten Anteil dran, denn es wird ja nur ein Datensatz aus dem Abfrageergebnis geholt. Zuvor jedoch werden gewöhnlich _alle_ abgefragten Datensätze in einen Puffer kopiert. _Das_ kostet im Zweifel den Speicher (und wer je nur einen einzigen Datensatz abfragt, der mehrere Gigabyte Daten ergibt, weil ein ungünstiges BLOB darunter ist, der hat andere Probleme, und insbesondere dann keine _zusätzlichen_ Probleme, weil der Arrayindex zu groß ist).
- Sven Rautenberg
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|