每個PHP開發者都會從其他編程語言中知道for-each, 這是一種循環結構,可以使數組做一個可繼續進行的變量。PHP中有一個同名函數:each。它也可以在循環中用于取值。each函數返回一個由四個元素組成的數組。每個鍵和值都代表著一個元素的不同部分。如果數組已經為空,那么返回false。
$value\n"; } //輸出方式2 $ele = each($animals); echo $ele["key"] . "=>" . $ele["value"]; ?>
首先,可以看到each()函數返回的數組含有四個元素。一個索引為1的元素表示數組中的鍵。另一個索引為0的元素表示數組中鍵值對應的值。其他兩個元素分別是對同一元素的更常規訪問方式。由于鍵和值這兩個元素是自解釋的,此處不再細講。
在第一種方式中,當函數返回false時循環結束。在第二種方式中,循環僅執行一次。這是因為在第二個實例中each函數返回數組的第一個元素,并將內部指針(pointer)向向下移動一個元素的位置。此時,循環結束并print函數輸出第一個元素的鍵和值。
請注意,在某些PHP版本中,使用each未顯示明確聲明數組變量的內部指針指向位置可能會導致未定義的行為。
除了簡單的數組遍歷方式,each異構向上兼容性。PHP 7 中很多傳統的函數已經被刪除或者不建議再使用,但是each是其中之一,它依舊具有可用性。特別是在處理較老的PHP代碼時,each函數允許PHP開發者不改變整個代碼文件,而實現一些必要的優化或修改。
如果您在審查代碼時發現了PHP使用each()函數的案例,那么很有可能是代碼年代久遠或有所商榷的。在PHP中,語言核心開發者已經棄用了each函數。且引起該函數使用的語法模式已經被推薦使用其他替代方法中完成。
開發者最好的選擇是使用原生的foreach語句。這個語句使用起來非常簡單,它沒有副作用且結構易懂。例以下為 foreach 的例子:
相比each函數方式,foreach語句總是以平等的方式遍歷數組中的所有元素。循環中,$animal變量包含當前的行值,變量是由開發人員根據實際情況而命名。
對于大多數php程序員和用戶而言,foreach都是理想的語言結構。