PHP dizi yineleme yapmak için en hızlı yol

3 Cevap php

Ben Zend PHP sertifika için okuyorum.

Bu sorunun cevabını emin değil.

Question: What is the best way to iterate and modify every element of an array using PHP 5?

a) yineleme sırasında bir dizi değişiklik yapamazsınız

b) for($i = 0; $i < count($array); $i++) { /* ... */ }

c) foreach($array as $key => &$val) { /* ... */ }

d) foreach($array as $key => $val) { /* ... */ }

e) while(list($key, $val) = each($array)) { /* ... */ }


My instinctive is (B) since there is no need to create temporary variable then I realize it won't work for associative arrays. Further searching around the net found this: Storing the invariant array count in a separate variable improves performance.

$cnt = count($array);
for ($i = 0; $i < $cnt; $i++) { }

3 Cevap

Bu seçenekler arasından C bariz cevap olacaktır.

(A) yanında kalan seçenekler may parantez içindeki koda bağlı olarak, bu elde etmek için kullanılır, ama soru bu kodu göstermektedir DEĞIL. Bu yüzden C olmalıdır

Önce evet sayımı yapıyor () döngü performansını artıracak, ancak bu soru performansı hakkında değil, sizin için - ve yanlış soruyu yanıtlayan vardır.

Sen gösterilen yapılardan herhangi bir dizinin her öğesi yineleme ve değiştirebilirsiniz. Ama bu bazı notlar:

dizi 0'dan n-1'e tuşları ile sayısal bir dizidir b) Eğer sadece yararlıdır.

c) dizilerin her iki tür için faydalıdır. Ayrıca $value elemanın değerini bir referanstır. Yani $value içine foreach da özgün değeri değişecek değişiyor.

d) $value (yani foreach $array bir kopyası üzerinde çalışır unutmayın) değerin bir kopyası dışında c) gibi. Ama elemanın tuşu ile $array[$key] ile özgün değeri erişebilir ve değiştirebilirsiniz.

e) d gibi). $array[$key] özgün öğeye erişmek ve değiştirmek için kullanın.

SPL burada en iyi cevap olacaktır.