Schon vor einger Zeit fand ich folgendes Schmankerl bei einem Code-Review:
for( $i = 0; $i < count($a_shops); $i++ ) { $shop[$i] = $a_shops[$i]; }
Nicht nur, dass eine for-Schleife recht ineffizient ist in diesem Kontext, nicht nur, dass das count() in der Schleifenbedingung vielfach umsonst ausgeführt wird und somit Performance kostet, dieses Monster ist einfach ineffizient und schlecht zu lesen. Und wer auch immer diesen Code erneut anfassen muss, dem geht es dann wie mir: Liegt ein versteckter Sinn hinter diesem Stück Code? Man sucht und sucht und findet – genau nichts… Dieser Code hat keinen tieferen Sinn, und der einzige Effekt dieses Codes ist eine Verlangsamung des betroffenen Scripts. Wesentlich effizienter wäre da
$shop = $a_shops;
Noch einfacher wäre es natürlich, wenn man auf diese Kopie verzichtet, denn wie sich nach Lektüre der restlichen 840 Zeilen Quellcode herausgestellt hat, ist sie völlig überflüssig…
Nachdem PHP aber Copy-on-Write macht ist die Zeile $shop = $a_shops; nicht so tragisch, wenn der Inhalt von $a_shops nicht verändert wird… das sind nur 4 Bytes, die da durch die Gegend kopiert werden.
Mir ist schon mehrmals bei der Programmierung aufgefallen, dass es keinen Sinn macht, Arrays zu kopieren. Man könne ja einfach auf das „originale“ Array zugreifen.
Viele Grüße
Elsensee – der aus dem Krankenhaus… (die Variable „shop“ kommt mir doch sehr bekannt vor…)
fuer arrays lohnen sich schleifen echt seltenst…man kann auch die map funktion super fuer soetwas verwenden 🙂 habs aber noch nicht „gebenchmarked“