在PHP中找出一个数字/变量是奇数还是偶数的最简单最基本的方法是什么? 这和mod有关吗?

我试过一些剧本,但是…谷歌目前没有发送。


当前回答

我是在假设已经有了一个计数器。在$i中,它在循环结束时递增,这对我来说是使用一个速记查询。

$row_pos = ($i & 1) ? 'odd' : 'even';

它会做什么呢,它会查询我们所做的语句实际上$i是奇数,取决于它的真或假将决定返回什么。返回值填充变量$row_pos

我的使用这是把它放在foreach循环,在我需要它之前,这使它成为一个非常有效的一行给我适当的类名,这是因为我已经有一个id的计数器,以便在程序后面使用。这是一个简短的例子,我将如何使用这一部分。

<div class='row-{$row_pos}'> random data <div>

这给了我奇数和偶数类在每一行,所以我可以使用正确的类和条纹我的打印结果在页面。

我使用的完整示例注意到id应用了计数器,类应用了奇数/偶数结果:

$i=0;
foreach ($a as $k => $v) {

    $row_pos = ($i & 1) ? 'odd' : 'even';
    echo "<div id='A{$i}' class='row-{$row_pos}'>{$v['f_name']} {$v['l_name']} - {$v['amount']} - {$v['date']}</div>\n";

$i++;
}

总之,这为创建漂亮的表提供了一种非常简单的方法。

其他回答

你认为mod是个不错的开始,这是对的。下面是一个表达式,如果$number为偶数则返回true,如果为奇数则返回false:

$number % 2 == 0

适用于所有integerPHP值,参见算术操作符sphp。

例子:

$number = 20;
if ($number % 2 == 0) {
  print "It's even";
}

输出:

它甚至

使用位操作: 在此方法中,您将找到带有1的数字的逐位与。如果位与为1,则该数字为奇数,否则为偶数。

function odd($var){
    return $var & 1;
}
function even($var){
    return !($var&1);
}
$arr = range(1,10);

echo "Odd Numbers: ";
echo "<pre>";
    print_r(array_filter($arr2, 'odd'));
echo "<pre>";

echo "<br>Even Numbers: ";
echo "<pre>";
    print_r(array_filter($arr2, 'even'));
echo "</pre>";

输出将是:

Odd Numbers:
Array
(
    [0] => 1
    [2] => 3
    [4] => 5
    [6] => 7
    [8] => 9
)

Even Numbers: 
Array
(
    [1] => 2
    [3] => 4
    [5] => 6
    [7] => 8
    [9] => 10
)

两个简单的位函数,返回0表示False,返回1表示True。

# is_odd: 1 for odd , 0 for even
odd = number & 1

# is_even: 1 for even , 0 for odd
even = number & 1 ^ 1

是的,使用mod

$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);

试试这个带有#Input字段的

<?php
    //checking even and odd
    echo '<form action="" method="post">';
    echo "<input type='text' name='num'>\n";
    echo "<button type='submit' name='submit'>Check</button>\n";
    echo "</form>";

    $num = 0;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["num"])) {
        $numErr = "<span style ='color: red;'>Number is required.</span>";
        echo $numErr;
        die();
      } else {
          $num = $_POST["num"];
      }


    $even = ($num % 2 == 0);
    $odd = ($num % 2 != 0);
    if ($num > 0){
        if($even){
            echo "Number is even.";
        } else {
            echo "Number is odd.";
        }
    } else {
        echo "Not a number.";
    }
    }
?>