PHP中的array_map()、array_walk()和array_filter()方法的区别

PHP中的array_map()、array_walk()和array_filter()方法的区别

array_map() Method : The array_map() 用于根据用户定义的条件以一种简单的方式修改一个或多个数组中的所有元素。它将数组中的每个元素发送给用户定义的函数,并返回一个由该函数修改的具有新值的数组。

语法:

array_map(functionName, arr1, arr2...)

参数: 此函数有2个强制参数 functionName and arr1 其余的都是可选的。

  • functionName(强制性): 该参数定义了用户定义函数的名称,数组中的值将根据该名称修改。
  • arr1(mandatory): 该参数指定要修改的阵列。
  • arr2(mandatory): 该参数指定要修改的阵列。

functionName形参是必须的,我们可以向名为arr1、arr2、…、arrn等的函数传递任意数量的数组

返回值 :该函数将用户函数应用到arr1的每个元素后,返回一个包含所有元素的数组。

示例: 下面的示例说明了PHP中 array_map() 函数.

<?php
  
function fun1(v) {
      return (v + 7);     // add 7
}
  
function fun2(v1,v2) {
    if (v1 ==v2) return 1;    
    else return 0;
}
  
arr1 = array(1, 2, 3, 4, 5);arr2 = array(1, 3, 3, 4, 8);
  
print_r(array_map("fun1", arr1));
  
print_r(array_map("fun2",arr1, $arr2));
  
?>

输出:

Array
(
    [0] => 8
    [1] => 9
    [2] => 10
    [3] => 11
    [4] => 12
)
Array
(
    [0] => 1
    [1] => 0
    [2] => 1
    [3] => 1
    [4] => 0
)

array_walk() 函数 : array_walk() 方法遍历整个数组而不考虑指针位置,并将回调函数或用户定义函数应用于数组的每个元素。数组元素的键和值是回调函数中的参数。

语法 :

boolean array_walk(array, myFunction,extraParam)

参数 :该函数接受三个参数,如下所示。

  • $array: 这是一个强制参数,用于指定输入数组。
  • myFunction: 该参数指定自定义函数的名称,也是必选参数。用户定义函数通常不使用两个参数,其中第一个参数表示数组的值,第二个参数表示相应的键。
  • $extraparam: 这是一个可选参数。除了数组键和值这两个参数外,它还为用户定义的函数指定了一个额外的参数。

返回值: 这个函数返回一个布尔值。成功时返回TRUE,失败时返回FALSE。

示例: 下面的示例说明了 array_walk() 函数.

<?php
// PHP program to illustrate array_walk() method
  
// User-defined callback function
function myfunction(value,key) {
    echo "The key key has the valuevalue </br>";
}
  
// Input array
arr = array(
      "a" => "yellow", 
      "b" => "pink", 
      "c" => "purple"
);
  
// Calling array_walk() method with
// no extra parameter
array_walk(arr, "myfunction");
  
?>

输出:

The key a has the value yellow 
The key b has the value pink 
The key c has the value purple

array_filter()方法 : 此方法使用用户定义的函数(也称为回调函数)过滤数组中的元素。的 array_filter() 函数遍历数组中的每个值,将它们传递给用户定义的函数或回调函数。如果回调函数返回true,则数组的当前值将返回到结果数组中,否则不返回。数组的键会被保留,即原始数组和输出数组中元素的键是相同的。

语法:

array array_filter(array,callback_function, $flag)

参数 :该函数有三个参数,其中一个是强制参数,另外两个是可选参数。

  • $array (强制性)这指的是要在其上执行筛选操作的输入数组。
  • $callback_function(可选):用户自定义函数。如果不提供该函数,则数组中所有等于FALSE的条目将被删除。
  • $flag (可选): 引用传递给回调函数的参数。
    • ARRAY_FILTER_USE_KEY -将key作为回调函数的唯一参数,而不是数组的值。
    • ARRAY_FILTER_USE_BOTH -将值和键作为参数传递给回调函数,而不是返回值。

返回值: 该函数返回一个过滤后的数组。

示例: 方法返回或过滤数组中的偶数元素 array_filter() 函数.

<?php
  
// PHP function to check for even
// elements in an array
function Even(array) {
    
    // Returns if the input integer is even
    if(array % 2 == 0)
        return TRUE;
    else
        return FALSE;
}
  
array = array(12, 0, 0, 18, 27, 0, 46);
print_r(array_filter(array, "Even"));
  
?>

输出:

Array
(
    [0] => 12
    [1] => 0
    [2] => 0
    [3] => 18
    [5] => 0
    [6] => 46
)

区别 :

array_map() array_walk () array_filter ()
这个函数将回调应用于数组中出现的元素。 此函数将用户定义的回调函数应用于给定输入数组的每个元素。 此函数用于使用回调函数过滤数组中存在的元素。
array_map()的这个回调函数针对每个数组中的每个元素运行。 Array_walk()函数将用户提供的函数应用于数组的每个成员 array_filter()迭代数组中的每个值,并将它们传递给回调函数

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程