根据条件从数组中选择值


Select values from an array based on a condition

假设我们有以下数组:

$ar = [2, 5, 3, 1];

选择<4、我们可以做到以下几点:

$newAr = [];
foreach($ar as $val){
    if($val < 4){
        $newAr[] = $val;
    }
}

有没有一种更优雅的方法可以做到这一点,也许是用一个接受数组和谓词函数的函数?

array_filter()完成此任务。

$array1 = array(1, 2, 3, 5);
function lessThanFour($var) {
    return $var < 4 ? $var : FALSE;
}
echo '<pre>';
print_r(array_filter($array1, "lessThanFour"));
echo '</pre>';

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)