首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带参数的PHP array_filter

带参数的PHP array_filter
EN

Stack Overflow用户
提问于 2011-03-30 15:01:48
回答 6查看 88.5K关注 0票数 122

我有以下代码:

代码语言:javascript
复制
function lower_than_10($i) {
    return ($i < 10);
}

我可以用它来过滤像这样的数组:

代码语言:javascript
复制
$arr = array(7, 8, 9, 10, 11, 12, 13);
$new_arr = array_filter($arr, 'lower_than_10');

我如何向lower_than_10添加参数,以便它也接受要检查的数字?比如,如果我有这个:

代码语言:javascript
复制
function lower_than($i, $num) {
    return ($i < $num);
}

如何从array_filter传递10到$num或其他数字?

EN

回答 6

Stack Overflow用户

发布于 2012-05-23 10:53:38

如果你使用的是php 5.3及以上版本,你可以使用closure来简化你的代码:

代码语言:javascript
复制
$NUM = 5;
$items = array(1, 4, 5, 8, 0, 6);
$filteredItems = array_filter($items, function($elem) use($NUM){
    return $elem < $NUM;
});
票数 305
EN

Stack Overflow用户

发布于 2011-03-30 15:15:29

在PHP5.3或更高版本中,您可以使用closure

代码语言:javascript
复制
function create_lower_than($number = 10) {
// The "use" here binds $number to the function at declare time.
// This means that whenever $number appears inside the anonymous
// function, it will have the value it had when the anonymous
// function was declared.
    return function($test) use($number) { return $test < $number; };
}

// We created this with a ten by default.  Let's test.
$lt_10 = create_lower_than();
var_dump($lt_10(9)); // True
var_dump($lt_10(10)); // False
var_dump($lt_10(11)); // False

// Let's try a specific value.
$lt_15 = create_lower_than(15);
var_dump($lt_15(13)); // True
var_dump($lt_15(14)); // True
var_dump($lt_15(15)); // False
var_dump($lt_15(16)); // False

// The creation of the less-than-15 hasn't disrupted our less-than-10:
var_dump($lt_10(9)); // Still true
var_dump($lt_10(10)); // Still false
var_dump($lt_10(11)); // Still false

// We can simply pass the anonymous function anywhere that a
// 'callback' PHP type is expected, such as in array_filter:
$arr = array(7, 8, 9, 10, 11, 12, 13);
$new_arr = array_filter($arr, $lt_10);
print_r($new_arr);
票数 37
EN

Stack Overflow用户

发布于 2015-01-26 23:52:08

如果需要将多个参数传递给函数,可以使用",“将它们附加到use语句:

代码语言:javascript
复制
$r = array_filter($anArray, function($anElement) use ($a, $b, $c){
    //function body where you may use $anElement, $a, $b and $c
});
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5482989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档