如何进行条件循环?

时间:2018-01-25 06:54:50

标签: php loops if-statement

我有一个数组,每次都包含不同数量的项目。我需要把这个条件放在它的路上:

  

“如果项目数小于2,则打印nothihg,如果项目数在2到4之间,则打印前两项,如果有5项,则打印所有项目“

注意到数组项目的最大数量为5

$myarr = ["one", "two", "three"];
foreach($myarr as $item){
    if( count($myarr) >= 2 && count($myarr) < 5 ){
        echo $myarr[0].PHP_EOL;
        echo $myarr[1];
    } else if( count($myarr) == 5 ){
        echo $myarr[0].PHP_EOL;
        echo $myarr[1].PHP_EOL;
        echo $myarr[2].PHP_EOL;
        echo $myarr[3].PHP_EOL;
        echo $myarr[4];
    } else {
        echo "nothing"; 
        break;
    }
}

如您所见,我已静态使用echo $var[i]。怎样才能让它更短,更有动力?

3 个答案:

答案 0 :(得分:6)

您可以使用以下解决方案:

<?php
$myarr = ["one", "two", "three"];
$items_count = count($myarr);

if ($items_count < 2) {
    echo "nothing";
} elseif ($items_count >= 2 && $items_count <= 4) {
    echo implode(PHP_EOL, array_slice($myarr, 0, 2));
} else {
    echo implode(PHP_EOL, $myarr);
}
  

演示: https://ideone.com/sG3Nm5

在这种情况下,您不需要foreach循环。使用count的简单条件列表可以做到这一点。

答案 1 :(得分:4)

有很多方法可以给这只猫上皮。这是我的两分钱:

清晰易读的版本

$array = ["one", "two", "three"];

$count = count($array);
$iterations = 0;

if ($count < 2) {
    echo 'nothing';
} else {
    $iterations = $count <= 4 ? 2 : $count;
}

for ($i = 0; $i < $iterations; $i++) {
    echo $array[$i] . PHP_EOL;
}

演示:https://3v4l.org/CWHuj

更紧凑,更难阅读和充满不良做法:

注意:这个版本只是为了好玩。在任何其他上下文中编写这样的代码应该是非法的。

$array = ["one", "two", "three"];
$count = count($array);
if (!$iterations = $count < 2 ? 0 : ($count <= 4 ? 2 : $count)) echo "nothing";
for ($i = 0; $i < $iterations; $i++) echo $array[$i] . PHP_EOL;

演示:https://3v4l.org/N1fnv

答案 2 :(得分:0)

$myarr = ["one", "two", "three", "four", "five"];
$output = '';
foreach($myarr as $k=>$item){
    if( count($myarr) >= 2 && count($myarr) < 5 && $k<2){
        $output .= $item.PHP_EOL;
    } else if( count($myarr) == 5 ){
        $output .= $item.PHP_EOL;
    } else if(count($myarr) <2) {
        $output .= "nothing"; 
        break;
    }
}
echo $output;