我有一个数组,每次都包含不同数量的项目。我需要把这个条件放在它的路上:
“如果项目数小于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]
。怎样才能让它更短,更有动力?
答案 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);
}
在这种情况下,您不需要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;
}
注意:这个版本只是为了好玩。在任何其他上下文中编写这样的代码应该是非法的。
$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;
答案 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;