Come rendere il loop arrays più veloce in PHP

C'è un modo per renderlo più veloce?

while ($item = current($data)) { echo '<ATTR>',$item, '</ATTR>', "\n"; next($data); } 

Non mi piace che ho bisogno di creare nuove variables come $ item.

 <?php $transport = arrays('foot', 'bike', 'car', 'plane'); foreach ($transport as $value) { echo $value; } ?> 

Se non vuoi creare variables temporanee, fallo in questo modo:

 while (current($data)) { echo '<ATTR>',current($data), '</ATTR>', "\n"; next($data); } 

Tuttavia, non so se questo lo renderà più veloce. L'unico modo per dirlo sarebbe con un profiler, ma è una tale micro-ottimizzazione che dubito che noterai la differenza.

Il modo migliore per accelerare il ciclo sarebbe utilizzare un computer più veloce.

Se tutto quello che stai facendo è il codice sopra puoi usare una dichiarazione di implode.

 if (count($data) > 0) { echo "<ATTR>".implode("</ATTR>\n<ATTR>", $data)."</ATTR>"; } 

$ nl = "\ n";

 while ($item = current($data)) { echo '<ATTR>',$item, '</ATTR>',$nl; next($data); } 

Memorizza il carattere di nuova row in una variabile piuttosto che avere PHP analizzare le virgolette doppie in each iterazione.

Potresti fare un foreach, ma poi dovresti creare 2 nuove variables. A less che non ti piaccia l'idea di assegnare variables all'interno della clausola while ().

 foreach($data as $key => $value) { echo $key . " => ".$value; } 

In entrambi i casi, dovrai creare una variabile reale.

Che dire di questa :

 function my_func($str) { echo "<attr>{$str}</attr>\n"; } arrays_map('my_func', $data); 

(Dovrebbe funzionare, ma sono curioso della sua velocità rispetto ad un ciclo foreach )

Oppure, se usi PHP> = 5.3 (probabilmente non è il tuo caso, btw) , puoi usare questo, basato su una function lambda:

 arrays_map(function ($item) { echo "<attr>{$item}</attr>\n"; }, $data); 

Quasi lo stesso, ma senza wherer dichiarare una function utilizzata solo una volta nel programma.