PHP hızlı dizi döngü yapmak için nasıl

5 Cevap

Bu daha hızlı yapmak için bir yolu var mı?

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

Ben $ öğe gibi yeni değişkenler oluşturmak gerektiğini sevmiyorum.

5 Cevap

Eğer geçici değişkenleri oluşturmak istemiyorsanız, bu gibi bunu:

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

Bu gerçekten daha hızlı yapacak, ancak ben bilmiyorum. Bir profil ile olacağını Onlar tek yolu anlatmak için, ama ben fark şüpheliyim böyle bir mikro-optimizasyonu.

Döngü hızlandırmak için en iyi yolu, daha hızlı bir bilgisayar kullanmak olacaktır.

Yaptığınız her şeyden kodu ise bir implode ifadeyi kullanabilirsiniz.


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);
}

Ziyade PHP her tekrarında çift tırnak işareti ayrıştırmak sahip bir değişken içine satır karakteri saklayın.

Bir foreach yapabileceğini, ancak daha sonra 2 yeni değişkenler oluşturmak olacaktır. Sadece while () yan tümcesi içinde değişkenleri atama fikrini sevmiyorum sürece.

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

Her iki şekilde de, gerçek bir değişken oluşturmak için ihtiyacımız olacak.

Buna ne dersin:

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

(Çalışmıyor, ama ben bir foreach döngü ile karşılaştırıldığında bu hız merak ediyorum Gerekenler)

Veya, (probably not your case, btw), bir lambda fonksiyonu dayalı bu birisini kullanabilirsiniz> = 5.3 PHP kullanıyorsanız:

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

Hemen hemen aynı, fakat programda sadece bir kez kullanılan bir işlev bildirmek zorunda kalmadan.