测试数字是奇数还是偶数

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

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

485370 次浏览

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

$number % 2 == 0

适用于所有PHP整数<一口> < em > < / em > < /一口>值,也可参见PHP算术运算符<一口> < em > < / em > < /一口>

例子:

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

输出:

它甚至

是的,使用mod

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

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

n & 1

例如:

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

所有偶数除以2都得整数

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

(bool)(~ $number & 1)
我做了一些测试,发现在mod, is_int和__abc1 -操作符之间,mod是最快的,紧随其后的是&-操作符。 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

另一种方法是检查最后一位是否为偶数:

$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
}

或者使其为更多更快 (< a href = " https://eval。in/528257" rel="nofollow">beats mod operator at times . in/528257" rel="nofollow):

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

这里是时间测试作为我的发现的证明。

我是在假设已经有了一个计数器。在$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++;
}

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

这段代码检查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>";
}

PHP自动将null和空字符串转换为0。对模也是这样。因此,代码将

$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来让我自己(和其他程序员)知道测试是预期的。

$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 . "<br/>";
}


$after = microtime(true);


echo $after-$before. 'seconds';

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

$check = 9;

:

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

或者:

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

工作得很好。

试试这个,

$number = 10;
switch ($number%2)
{
case 0:
echo "It's even";
break;
default:
echo "It's odd";
}
//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.";
}

试试这个带有#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.";
}
}
?>

检查偶数或奇数不使用条件和循环语句。

这对我很有用!

$(document).ready(function(){
$("#btn_even_odd").click(function(){
var arr = ['Even','Odd'];
var num_even_odd = $("#num_even_odd").val();
$("#ans_even_odd").html(arr[num_even_odd % 2]);
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title>Check Even Or Odd Number Without Use Condition And Loop Statement.</title>
</head>
<body>
<h4>Check Even Or Odd Number Without Use Condition And Loop Statement.</h4>
<table>
<tr>
<th>Enter A Number :</th>
<td><input type="text" name="num_even_odd" id="num_even_odd" placeholder="Enter Only Number"></td>
</tr>
<tr>
<th>Your Answer Is :</th>
<td id="ans_even_odd" style="font-size:15px;color:gray;font-weight:900;"></td>
</tr>
<tr>
<td><input type="button" name="btn_even_odd" id="btn_even_odd" value="submit"></td>
</tr>
</table>
</body>
</html>

$number %2 = 1如果是奇数…所以不用用not even…

$number = 27;


if ($number % 2 == 1) {
print "It's odd";
}
<?php
// Recursive function to check whether
// the number is Even or Odd
function check($number){
if($number == 0)
return 1;
else if($number == 1)
return 0;
else if($number<0)
return check(-$number);
else
return check($number-2);
}
  

// Check the number odd or even
$number = 35;
if(check($number))
echo "Even";
else
echo "Odd";
?>

因此,输出将是奇怪的

两个简单的位函数,返回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

使用位操作: 在此方法中,您将找到带有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
)