首页 文章

测试数字是奇数还是偶数

提问于
浏览
228

什么是最简单的最基本的方法来确定数字/变量是奇数还是甚至在PHP中?这与mod有关吗?

我已经尝试了一些脚本,但是谷歌目前还没有提供 .

16 回答

  • 7

    你是正确的认为mod是一个很好的起点 . 这是一个表达式,如果 $number 是偶数则返回true,如果是奇数则返回false:

    $number % 2 == 0
    

    适用于每个integerPHP值,请参阅Arithmetic OperatorsPHP .

    Example:

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

    输出:

    甚至是

  • 21

    另一种选择是简单的位检查 .

    n & 1
    

    例如:

    if ( $num & 1 ) {
      //odd
    } else {
      //even
    }
    
  • 2

    是的使用mod

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

    另一种选择是检查最后一位数字是否为偶数:

    $value = "1024";// A Number
    $even = array(0, 2, 4, 6, 8);
    if(in_array(substr($value, -1),$even)){
      // Even Number
    }else{
      // Odd Number
    }
    

    或者为了加快速度,请使用 isset() 而不是 array_search

    $value = "1024";// A Number
    $even = array(0 => 1, 2 => 1, 4 => 1, 6 => 1, 8 => 1);
    if(isset($even[substr($value, -1)]){
      // Even Number
    }else{
      // Odd Number
    }
    

    或者使它成为 more fasterbeats mod operator at times ):

    $even = array(0, 2, 4, 6, 8);
    if(in_array(substr($number, -1),$even)){
      // Even Number
    }else{
      // Odd Number
    }
    

    这是time test作为我的发现的证明 .

  • 6

    虽然所有答案都是正确的,但一行中的简单解决方案是:

    $check = 9;
    

    之一:

    echo ($check & 1 ? 'Odd' : 'Even');
    

    要么:

    echo ($check % 2 ? 'Odd' : 'Even');
    

    效果很好 .

  • 1
    (bool)($number & 1)
    

    要么

    (bool)(~ $number & 1)
    
  • 5

    我做了一些测试,发现在mod, is_int& -operator之间,mod是最快的,紧跟着&-operator . is_int 比mod慢近4倍 .

    我使用以下代码进行测试:

    $number = 13;
    
    $before = microtime(true);
    for ($i=0; $i<100000; $i++) {
        $test = ($number%2?true:false);
    }
    $after = microtime(true);
    
    echo $after-$before." seconds mod<br>";
    
    $before = microtime(true);
    for ($i=0; $i<100000; $i++) {
        $test = (!is_int($number/2)?true:false);
    }
    $after = microtime(true);
    
    echo $after-$before." seconds is_int<br>";
    
    $before = microtime(true);
    for ($i=0; $i<100000; $i++) {
        $test = ($number&1?true:false);
    }
    $after = microtime(true);
    
    echo $after-$before." seconds & operator<br>";
    

    我得到的结果非常一致 . 这是一个示例:

    0.041879177093506 seconds mod
    0.15969395637512 seconds is_int
    0.044223070144653 seconds & operator
    
  • -1

    所有偶数除以2将得到整数

    $number = 4;
    if(is_int($number/2))
    {
       echo("Integer");
    }
    else
    {
       echo("Not Integer");
    }
    
  • 1

    PHP将null和空字符串自动转换为零 . 这也发生在模数上 . 因此代码

    $number % 2 == 0 or !($number & 1)
    

    值$ number =''或$ number = null结果为true . 我测试它有点扩展:

    function testEven($pArg){
        if(is_int($pArg) === true){
            $p = ($pArg % 2);
            if($p== 0){
                print "The input '".$pArg."' is even.<br>";
            }else{
                print "The input '".$pArg."' is odd.<br>";
            }
        }else{
            print "The input '".$pArg."' is not a number.<br>";
        }
    }
    
    The print is there for testing purposes, hence in practice it becomes:
    function testEven($pArg){
        if(is_int($pArg)=== true){
            return $pArg%2;
        }
        return false;
    }
    

    对于任何奇数,此函数返回1,对于任何偶数,此函数返回0;如果不是数字,则返回false . 我总是写=== true或=== false让我自己(和其他程序员)知道测试是按照预期的 .

  • 0
    //for numbers n [0,1,2,3,4....]
    
    if((n+2)%2==1) {
       //odd
    }else {
      //even
    }
    

    零是偶数 . 换句话说,它的奇偶校验 - 整数的质量是偶数或奇数 - 是偶数 . 证明零是偶数的最简单方法是检查它是否符合"even"的定义:它是2的整数倍,特别是0×2 . 因此,零共享所有表征偶数的属性:0可以整除如图2所示,0在两侧被奇数包围,0是整数(0)与其自身的和,并且一组0个对象可以被分成两个相等的集合 . 来自http://en.wikipedia.org/wiki/Parity_of_zero

  • 7

    我假设已经有一个柜台 . 在$ 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++;
    }
    

    总之,这给了我一个非常简单的方法来创建一个漂亮的表 .

  • -1

    此代码检查数字是奇数还是甚至是PHP . 在示例 $a2 ,你得到偶数 . 如果您需要奇数,则更改 $a

    $a=2;
    if($a %2 == 0){
        echo "<h3>This Number is <b>$a</b> Even</h3>";
    }else{
        echo "<h3>This Number is <b>$a</b> Odd</h3>";
    }
    
  • -1

    试试这个,

    $number = 10;
     switch ($number%2)
     {
     case 0:
     echo "It's even";
     break;
     default:
     echo "It's odd";
     }
    
  • 179
    $before = microtime(true);
    
    $n = 1000;  
    $numbers = range(1,$n);
    
    $cube_numbers = array_map('cube',$numbers);
    
    function cube($n){      
        $msg ='even';       
        if($n%2 !=0){
            $msg = 'odd';
        }               
        return "The Number is $n is ".$msg;
    }
    
    foreach($cube_numbers as $cube){
        echo $cube . "
    "; } $after = microtime(true); echo $after-$before. 'seconds';
  • 1
    //checking even and odd
    $num =14;
    
    $even = ($num % 2 == 0);
    $odd = ($num % 2 != 0);
    
    if($even){
        echo "Number is even.";
    } else {
        echo "Number is odd.";
    }
    
  • 514

    用#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.";
        }
        }
    ?>
    

相关问题