Distinguishing array_map, array_walk and array_filter in PHP
Although array_map, array_walk, and array_filter are all PHP functions that take a callback function as an argument to perform an action on an array, there are subtle differences in their behavior and usage.
Key Differences:
1. Value Modification:
array_map cannot modify the values within the input array, while array_walk can. This is because array_map creates a new array with the results of the callback function, while array_walk modifies the input array in place.
2. Array Key Access:
array_map cannot operate on array keys, while array_walk can. This means that array_walk can perform operations based on both the values and keys of the array.
3. Return Value:
array_map returns a new array containing the results of the callback function, while array_walk returns true if the callback function was successfully applied to all elements of the input array.
4. Multiple Array Iteration:
array_map can accept multiple arrays as input and iterate over them in parallel, allowing for operations on multiple arrays at once. array_walk, on the other hand, operates on only one array.
5. Callback Argument Passing:
array_walk allows for an additional arbitrary parameter to be passed to the callback function, providing flexibility in the actions performed within the callback.
6. Returned Array Length:
array_map produces a result array with the same length as the largest input array. array_walk does not return an array and cannot alter the number of elements in the input array. array_filter returns a subset of the original array based on the filtering function and preserves the original keys.
Example:
Consider the following code:
<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>
In the first case, array_map creates a new array with the floor values of each element in $a1, but $a1 itself remains unmodified. In the second case, array_walk directly modifies the elements of $a2 by rounding them down to the nearest integer.
The above is the detailed content of How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?. For more information, please follow other related articles on the PHP Chinese website!