簡體   English   中英

在PHP中迭代數組的最快方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM