首頁  >  文章  >  後端開發  >  array_map、array_walk 和 array_filter 在 PHP 中的行為和用法有何不同?

array_map、array_walk 和 array_filter 在 PHP 中的行為和用法有何不同?

DDD
DDD原創
2024-11-03 13:06:03969瀏覽

How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn