在PHP中找出数字/变量是奇数还是偶数的最简单的最基本方法是什么? 这与mod有关吗?
我尝试了一些脚本,但是谷歌目前还没有提供。
答案 0 :(得分:536)
你认为mod是一个很好的起点。这是一个表达式,如果$number
为偶数,则返回true,如果为奇数则返回false:
$number % 2 == 0
适用于每个integerPHP值,请参阅Arithmetic OperatorsPHP。
示例:强>
$number = 20;
if ($number % 2 == 0) {
print "It's even";
}
输出:
甚至
答案 1 :(得分:184)
另一种选择是简单的位检查。
n & 1
例如:
if ( $num & 1 ) {
//odd
} else {
//even
}
答案 2 :(得分:23)
是的,使用mod
$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);
答案 3 :(得分:8)
虽然所有答案都是正确的,但一行中的简单解决方案是:
$check = 9;
或者:
echo ($check & 1 ? 'Odd' : 'Even');
或:
echo ($check % 2 ? 'Odd' : 'Even');
效果很好。
答案 4 :(得分:7)
(bool)($number & 1)
或
(bool)(~ $number & 1)
答案 5 :(得分:7)
另一种选择是检查最后一位数字是否为偶数:
$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
}
或者更快( beats 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 :(得分:5)
我做了一些测试,发现在mod,is_int
和&
- 运算符之间,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
答案 7 :(得分:2)
所有偶数除以2将产生整数
$number = 4;
if(is_int($number/2))
{
echo("Integer");
}
else
{
echo("Not Integer");
}
答案 8 :(得分:2)
在不使用条件和循环语句的情况下检查偶数或奇数。
这对我有用..!
$(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>
答案 9 :(得分:2)
PHP将null和空字符串自动转换为零。这也发生在模数上。因此代码
$number % 2 == 0 or !($number & 1)
价值$ number =&#39;&#39;或$ number = null 结果是真的。 我测试它有点扩展:
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让自己(和其他程序员)知道测试是按照预期进行的。
答案 10 :(得分:1)
此代码检查数字是奇数还是甚至是PHP。在示例中,$a
为2
,您获得偶数。如果您需要奇数,请更改$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>";
}
答案 11 :(得分:1)
我假设有一个柜台已经到位。在$ i中,在循环结束时递增,这适用于我使用简写查询。
$row_pos = ($i & 1) ? 'odd' : 'even';
那么这是做什么的,它会查询我们正在制作的语句$ i是奇数,取决于它的真或假将决定返回什么。返回的值填充变量$ row_pos
我使用它是将它放在foreach循环中,就在我需要它之前,这使得它成为一个非常有效的一个衬里给我适当的类名,这是因为我已经有一个id的计数器&# 39; s以便在程序中使用。这是我将如何使用这部分的简短例子。
<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++;
}
总之,这给了我一个非常简单的方法来创建一个漂亮的表。
答案 12 :(得分:1)
//for numbers n [0,1,2,3,4....]
if((n+2)%2==1) {
//odd
}else {
//even
}
零是偶数。换句话说,它的奇偶校验 - 整数的质量是偶数或奇数 - 是偶数。证明零是偶数的最简单方法是检查它是否符合“偶数”的定义:它是2的整数倍,特别是0×2。因此,零共享所有表征偶数的属性:0可被2整除,0在两侧被奇数包围,0是整数(0)与其自身的和,一组0对象可以被分成两个相等的集合。来自http://en.wikipedia.org/wiki/Parity_of_zero
答案 13 :(得分:0)
试试这个,
$number = 10;
switch ($number%2)
{
case 0:
echo "It's even";
break;
default:
echo "It's odd";
}
答案 14 :(得分:0)
$number %2 = 1 如果是奇数...所以不必使用非偶数...
$number = 27;
if ($number % 2 == 1) {
print "It's odd";
}
答案 15 :(得分:-1)
$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';
答案 16 :(得分:-1)
private class KeyIterator implements Iterator<K> {
private int currentIndex; // Current position in hash table
//private int numberLeft; // Number of entries left in iteration
private KeyIterator() {
currentIndex = 0;
//numberLeft = numberOfEntries;
} // end default constructor
public boolean hasNext() {
return currentIndex < numberOfEntries;
} // end hasNext
public K next() {
K result = null;
if (hasNext()) {
LList<TableEntry> items = hashTable[currentIndex];
if (items != null) {
Iterator<TableEntry> traverse = items.getIterator();
while (traverse.hasNext()) {
TableEntry<K, V> item = traverse.next();
result = item.key;
// if (items.contains(item)) {
// hashTable[currentIndex] = items;
// }
// numberLeft--;
numberOfEntries++;
}//reaches last entry in hash table w/ current index
currentIndex++;
} else {//items == null, that is, there is no llist in the current hash table
currentIndex++;
}
} else {//reaches the end of the hash table
throw new NoSuchElementException();
}
return result;
} // end next
public void remove() {
throw new UnsupportedOperationException();
} // end remove
} // end KeyIterator
答案 17 :(得分:-1)
使用#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.";
}
}
?>
答案 18 :(得分:-3)
由于某些原因,警告在for loop声明中此条件的计算结果为TRUE,如下所示:
在每次迭代的开始,将评估
expr2
。如果它 计算结果为TRUE,循环继续,并且嵌套语句为 被执行。如果计算结果为FALSE,则循环的执行结束。
这不有效:
for ($i=0; $i % 2 === 1 && $i < count($str); $i++){
// echo "-----------\n";
}
这不有效:
for ($i=0; ($i % 2 === 1) && $i < count($str); $i++){
// echo "-----------\n";
}
这不有效:
for ($i=0; ($i % 2) === 1 && $i < count($str); $i++){
// echo "-----------\n";
}
此方法确定:
for ($i=0; $i<count($str); $i++){
if ($i % 2 === 1) {
// echo "-----------\n";
}
}