如何在没有if语句的情况下打印奇/偶数序列

时间:2019-04-23 07:54:50

标签: php if-statement

我正在编写程序,使用if语句列出n个元素(1,2,... n)的奇/偶数序列。 例如,

n = 1

Odd Series
1
3
5
7
9

Even Series
0
2
4
6
8

如果有可能在没有if语句的情况下打印奇/偶数序列。

4 个答案:

答案 0 :(得分:3)

是的。这个有可能。我们可以列出没有if条件的奇数或偶数序列。

我们使用inifment条件的Increment运算符。

示例代码为

<?php
    echo "Odd Series";
    echo "<pre>";
    for ($i=0; $i < 10; $i++) { 
         echo ++$i;
    }
    echo "Even Series";
    echo "<pre>";
    for ($i=0; $i < 10; $i++) { 
        echo $i++;
    }
?>

示例输出在这里

Odd Series
1
3
5
7
9

Even Series
0
2
4
6
8

答案 1 :(得分:3)

您可以按需使用range,步长为2,根据需要从0或1开始:

echo "Odd Series\n";
foreach (range(1, 9, 2) as $v) echo "$v ";
echo "Even Series\n";
foreach (range(0, 9, 2) as $v) echo "$v ";

输出:

Odd Series
1 3 5 7 9 
Even Series
0 2 4 6 8

Demo on 3v4l.org

答案 2 :(得分:2)

我们可以尝试使用三元表达式代替if语句:

// even series
for ($i = 0; $i < 10; $i++) {
    echo $i % 2 == 0 ? $i : "\n";
}

另一种可能性是按照2的步骤迭代for循环。

for ($i = 0; $i < 10; $i=$i+2) {
    echo $i . "\n";
}

答案 3 :(得分:2)

使用数组,可以使用range()创建范围,并使用array_filter()使用位运算符提取奇数或偶数。

$n = 8;
$series = range(1, $n);

$odd = array_filter($series, function($value) { return $value & 1; });
$even = array_filter($series, function($value) { return !($value & 1); });

var_dump($odd, $even);

然后只需循环数组$odd$even

echo "Odd values: \n";
foreach ($odd as $v) {
    echo $v."\n";
}

echo "Even values: \n";
foreach ($even as $v) {
    echo $v."\n";
}