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之外还有更好的方法来解决这个问题( )功能请教我,非常感谢。
答案 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
数组中的项目。