php,返回整数数组中的所有元素,大于存储在变量

时间:2016-04-24 23:04:45

标签: php arrays

ell,我的第一个想法是使用array_filter函数看起来像这样:

function gettime(){


$cityciqurechangetime = an array of integers;
$iniFirstLegEndTime = an integer calculated by other methods;

$CitySquareTimearray = array_filter($cityciqurechangetime, 
                                   function($n){global $iniFirstLegEndTime ;
                                   return $n >= ($iniFirstLegEndTime);});

return $CitySquareTimearray;

}

但它没有用,我运行了一些测试,结果表明变量$ iniFirstLegEndTime从未传递给array_filter()函数中的回调函数,所以$ CitySquareTimearray变量只是整个数组$ cityciqurechangetime。

我曾经想过也许我不应该在array_filter()函数中声明一个函数,但是下面的函数在$ starttimetabletime是 一系列时间戳。

$initStartTimearray = array_filter($starttimetabletime, 
                                    function($n) 
                                    {return $n >= time();});

我真正想要的是$ cityciqurechangetime的“子数组”,其中所有元素都大于或等于$ iniFirstLegEndTime,请告诉我我做错了什么或者除了使用array_filter之外还有更好的方法来解决这个问题( )功能请教我,非常感谢。

2 个答案:

答案 0 :(得分:2)

您的退货声明不正确。以下是您的脚本的更新版本:

function gettime(){


    $cityciqurechangetime = [1,2,3,4,5];
    $iniFirstLegEndTime = 2;

    $CitySquareTimearray = array_filter($cityciqurechangetime, function($n) use ($iniFirstLegEndTime){
        return $n >= ($iniFirstLegEndTime)?$n:null;
    });

    return $CitySquareTimearray;

}

var_dump(gettime());

你应该使用数组过滤器,因为它比数组迭代更高效。

答案 1 :(得分:0)

上面@ null05提供的更新函数是避免使用global关键字的正确方法,并且可以在不使用三元运算符的情况下进一步简化return语句。

function gettime() {
    $cityciqurechangetime = [1,2,3,4,5];
    $iniFirstLegEndTime = 2;

    $CitySquareTimearray = array_filter($cityciqurechangetime, function($n) use ($iniFirstLegEndTime) {
        return $n >= $iniFirstLegEndTime;
    });

    return $CitySquareTimearray;
}

var_dump(gettime());

array_filter内的回调返回一个布尔值,通知array_filter要包含在$CitySquareTimearray数组中的项目。