array_filter

此函数返回一个新的数组,该数组是给定数组(或其范围)的筛选版本。

您提供了一个对数组中的所有元素运行的判断方法。它应根据条件返回 truefalse

判断函数为其返回 true 的元素包括在返回的数组中,而获得 false 的元素将被忽略。

默认情况下,该函数检查整个数组。您可以选择提供偏移量和长度参数来检查数组的一部分,向前或向后遍历数组。

判断函数判断函数

此函数接受在给定数组上操作的判断方法。向判断函数传递以下参数:

语法:

function(element, index);

参数类型描述
elementAny当前数组元素的值
indexReal当前数组索引

判断函数应返回布尔值,这会影响原始函数修改或读取数组的方式

请参阅有关判断方法的信息和示例。

注意 参见 array_copy_while,该方法类似,但在判断函数的第一个 false 返回后停止执行。

语法:

array_filter(array, function, [offset], [length]);

参数类型描述
arrayArray要使用的数组
functionFunction要在每个元素上运行的判断方法
offsetReal可选 数组中的偏移量或起始索引。设置负值将从数组的末尾开始计数。然后,起始索引将是 array_length(array) + offset。请参阅:偏移量和长度
lengthReal可选 要遍历的元素数。负值将向后遍历数组(即以索引的降序,例如 2、1、0 而不是 2、3、4)。请参阅:偏移量和长度

返回:

Array

 

例子:

function passed_the_test(element, index)
{
    return element >= 50;
}

scores = [0, 15, 4, 78, 96, 65, 49];
passed = array_filter(scores, passed_the_test);

上面的代码首先定义了一个函数 passed_the_test,该函数接受 elementindex 参数,这对于数组判断函数来说是很常见的。

如果 element 的值大于或等于 50,则函数返回 true,否则返回 false

然后,它创建一个具有介于 0 和 100 之间的各种值的数组 score。最后,它对该数组调用 array_filter,并将新数组存储在 passed 的变量中。

passed 数组将只包含 scores 数组中大于或等于 50 的值,满足判断函数中设置的条件。