当前位置:  首页>> 技术小册>> PHP合辑3-数组函数

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

语法:

array array_filter(array,callback_function, $flag)

参数:该函数采用三个参数,其中一个是必需的,另外两个是可选的。

array(必需):这是要进行过滤操作的输入数组。callback_function(可选):指的是用户定义的函数。如果不提供该函数,则将删除数组中所有等于FALSE的条目。
$flag(可选):指的是传递给回调函数的参数。
ARRAY_FILTER_USE_KEY - 将键作为唯一的参数传递给回调函数,而不是数组的值。
ARRAY_FILTER_USE_BOTH - 将值和键都作为参数传递给回调函数,而不是值。
返回值:该函数返回一个过滤后的数组。


下面是一个程序,展示了如何使用array_filter()函数返回或过滤数组中的偶数元素。

  1. <?php
  2. // PHP function to check for even elements in an array
  3. function Even($array)
  4. {
  5. // returns if the input integer is even
  6. if($array%2==0)
  7. return TRUE;
  8. else
  9. return FALSE;
  10. }
  11. $array = array(12, 0, 0, 18, 27, 0, 46);
  12. print_r(array_filter($array, "Even"));
  13. ?>

output:

  1. Array
  2. (
  3. [0] => 12
  4. [1] => 0
  5. [2] => 0
  6. [3] => 18
  7. [5] => 0
  8. [6] => 46
  9. )

在这个例子中,我们不传递回调函数,让我们看看输出。我们将看到0或false的元素没有被打印出来:

  1. <?php
  2. // PHP function to check for even elements in an array
  3. function Even($array)
  4. {
  5. // returns if the input integer is even
  6. if($array%2==0)
  7. return TRUE;
  8. else
  9. return FALSE;
  10. }
  11. $array = array(12, 0, 0, 18, 27, 0, 46);
  12. print_r(array_filter($array));
  13. ?>

output:

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