PHP 中array_map、array_walk 和array_filter 的區別
雖然array_map、array_walk 和array_filter參數對陣列執行操作,它們的行為和用法有細微差別。
主要差異:
1.值修改:
array_map 無法修改輸入陣列中的值,而 array_walk 可以。這是因為 array_map 使用回呼函數的結果建立一個新數組,而 array_walk 則就地修改輸入數組。
2.陣列鍵存取:
array_map 無法對陣列鍵進行操作,而 array_walk 可以。這表示 array_walk 可以根據陣列的值和鍵執行操作。
3.傳回值:
array_map 傳回一個包含回調函數結果的新數組,而如果回呼函數成功應用於輸入數組的所有元素,則 array_walk 傳回 true。
4.多個數組迭代:
array_map 可以接受多個數組作為輸入並並行迭代它們,從而允許同時對多個數組進行操作。另一方面,array_walk 只對一個陣列進行操作。
5.回呼參數傳遞:
array_walk 允許將額外的任意參數傳遞給回調函數,為回呼中執行的操作提供彈性。
6.傳回的陣列長度:
array_map 產生一個與最大輸入陣列長度相同的結果陣列。 array_walk 不會傳回數組,且無法變更輸入數組中的元素數量。 array_filter 根據過濾函數傳回原始陣列的子集,並保留原始鍵。
範例:
考慮以下程式碼:
<code class="php">$a1 = array(2.4, 2.6, 3.5); $a2 = array(2.4, 2.6, 3.5); array_map('floor', $a1); // $a1 remains unchanged array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>
在第一種情況下,array_map 使用$a1 中每個元素的下限值建立一個新數組,但$a1 本身保持不變。在第二種情況下,array_walk 直接修改 $a2 的元素,將它們向下捨去到最接近的整數。
以上是array_map、array_walk 和 array_filter 在 PHP 中的行為和用法有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!