[英]Fastest way to iterate array in PHP
我正在攻讀Zend PHP認證。
不確定這個問題的答案。
問題:使用PHP 5迭代和修改數組的每個元素的最佳方法是什么?
a)您無法在迭代期間修改數組
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)) { /* ... */ }
我的本能是(B),因為不需要創建臨時變量,然后我意識到它不適用於關聯數組。 進一步搜索網絡發現:將不變數組計數存儲在單獨的變量中可以提高性能。
$cnt = count($array);
for ($i = 0; $i < $cnt; $i++) { }
從這些選項中,C將是明顯的答案。
其余選項(除了A) 可用於實現,取決於括號內的代碼,但問題不顯示該代碼。 所以一定是C.
你正在回答錯誤的問題 - 是的,在for循環之前做count()會提高性能,但這個問題與性能無關。
您可以使用任何顯示的構造迭代和修改數組的每個元素。 但有些注意到:
b)僅在數組為0到n-1之間的數字數組時才有用。
c)對兩種陣列都有用。 另外, $value
是元素值的引用。 因此,在foreach
更改$value
也會改變原始值。
d)與c)類似,但$value
是$value
的副本(注意foreach
在$array
的副本上運行)。 但是使用元素的鍵,您可以使用$array[$key]
訪問和更改原始值。
e)像d)。 使用$array[$key]
訪問和更改原始元素。
SPL將是這里最好的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.