我想循环遍历一个应用了比较运算符的数组。
所以,虽然这段代码:
$arr = array(1,2,3,4,5,6,7,8,9);
foreach($arr as $key)
{
echo $key;
}
将echo
“123456789”,我想要一个只能列出大于 5 或小于 5 的数字等的代码(因此它会输出 6789 或 1234。)
注意:我几乎可以肯定有办法做到这一点,而且相对简单,但我找不到办法做到这一点,而且在 stackoverflow 上问这个似乎没有问题。我看过,但正如我的标题所示,我不确定如何简洁地说明这一点以进行谷歌搜索。谢谢你。
注意:我曾考虑使用外部条件检查,但我猜如果有专门为此的 php 函数,它会更有效。
更新:建议使用 array_filter,因此我运行了以下基准测试,以测试传统方法或内置方法是否更好:
$arr=array();
for($x=1;$x<10001;$x++){
$arr[]=$x;
}
$a1 = microtime();
foreach($arr as $key) {
if ($key > 5000) {
echo $key;
}
}
$a2 = microtime();
$a3 = microtime();
$greater = array_filter($arr, function ($key) {
return $key > 5000;
});
foreach($greater as $key) {
echo $key;
}
$a4 = microtime();
$firsttest=$a2-$a1;
$secondtest=$a4-$a3;
echo '<br>'.$firsttest.'<br>'.$secondtest;
第二次测试持续花费大约两倍到三倍的时间,这意味着使用 foreach 然后使用 if 条件比使用 array_filter 然后使用 foreach 循环效率更高。