如何仅选择并遍历满足数组中某些条件的项目

时间:2013-10-12 03:52:56

标签: php arrays

我想在应用了比较运算符的数组中循环。

所以,这段代码:

$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循环更有效。

2 个答案:

答案 0 :(得分:2)

您只需在回声附近添加一个条件。

$arr = array(1,2,3,4,5,6,7,8,9); 

foreach($arr as $key) {
    if ($key > 5) {
        echo $key;
    }
}

或使用三元运算符,如果空字符串不大于5,则回显空字符串。

$arr = array(1,2,3,4,5,6,7,8,9); 

foreach($arr as $key) {
    echo $key > 5 ? $key : '';
}

然后有array_filter允许你提取所有values > 5并将它们放在自己的数组中。如果您需要保留这些值以供日后使用,这很有用。

$arr = array(1,2,3,4,5,6,7,8,9);
$greater = array_filter($arr, function($key) {
    return $key > 5;
});

foreach($greater as $key) {
    echo $key;
}

答案 1 :(得分:1)

$arr = array(1,2,3,4,5,6,7,8,9); 

foreach($arr as $key) 
{ 
  if($key > 5)
     echo $key;
}