Select 个基于条件的数组值

Select values from an array based on a condition

假设我们有以下数组:

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

对于 select 每个 < 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
)