php - saber - Prueba si el número es impar o par
que pida un número y diga si es par o impar (16)
Este código comprueba si el número es impar o incluso en PHP. En el ejemplo, $a
es 2
y obtienes un número par. Si necesita impar entonces cambie el valor de $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>";
}
¿Cuál es la forma más sencilla y básica de averiguar si un número / variable es impar o incluso en PHP? ¿Es algo que ver con el mod?
He intentado algunos scripts pero ... google no está entregando en este momento.
Estoy asumiendo que ya hay un contador en su lugar. en $ i que se incrementa al final de un bucle, esto funciona para mí usando una consulta abreviada.
$row_pos = ($i & 1) ? ''odd'' : ''even'';
Entonces, ¿qué hace esto? Bueno, consulta la afirmación que estamos haciendo en esencia $ i es impar, dependiendo de si es verdadero o falso decidirá qué se devuelve. El valor devuelto llena nuestra variable $ row_pos
El uso que hago de esto es colocarlo dentro del bucle foreach, justo antes de que lo necesite. Esto hace que sea un muy eficiente para darme los nombres de clase apropiados. Esto se debe a que ya tengo un contador para que los ID utilicen mas tarde en el programa. Este es un breve ejemplo de cómo usaré esta parte.
<div class=''row-{$row_pos}''> random data <div>
Esto me da clases pares e impares en cada fila para que pueda usar la clase correcta y dividir mis resultados impresos en la página.
El ejemplo completo de lo que uso nota que el ID tiene el contador aplicado y la clase tiene mi resultado impar / par aplicado:
$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++;
}
En resumen, esto me da una forma muy simple de crear una tabla bonita.
Hice is_int
pruebas y descubrí que entre mod, is_int
y &
-operator, mod es el más rápido, seguido de cerca por & -operator. is_int
es casi 4 veces más lento que el mod.
Usé el siguiente código para propósitos de prueba:
$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>";
Los resultados que obtuve fueron bastante consistentes. Aquí hay una muestra:
0.041879177093506 seconds mod
0.15969395637512 seconds is_int
0.044223070144653 seconds & operator
Otra opción es una simple comprobación de bits.
n & 1
por ejemplo:
if ( $num & 1 ) {
//odd
} else {
//even
}
Otra opción es verificar si el último dígito es un número par:
$value = "1024";// A Number
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($value, -1),$even)){
// Even Number
}else{
// Odd Number
}
O para hacerlo más rápido, use isset()
lugar de 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
}
O para hacerlo más rápido ( beats mod operator
a veces ):
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($number, -1),$even)){
// Even Number
}else{
// Odd Number
}
Aquí está la prueba de tiempo como una prueba de mis hallazgos.
PHP está convirtiendo nulo y una cadena vacía automáticamente a cero. Eso también sucede con el módulo. Para ello será el código.
$number % 2 == 0 or !($number & 1)
con el valor $ número = '''' o $ número = resultado nulo en verdadero. Lo pruebo por lo tanto un poco más extendido:
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;
}
Esta función devuelve 1 para cualquier número impar, 0 para cualquier número par y falso cuando no es un número. Siempre escribo === verdadero o === falso para que yo mismo (y otros programadores) sepan que la prueba es la prevista.
Prueba este con el campo #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.";
}
}
?>
Prueba esto,
$number = 10;
switch ($number%2)
{
case 0:
echo "It''s even";
break;
default:
echo "It''s odd";
}
Sí usando el mod
$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);
Si bien todas las respuestas son buenas y correctas, la solución simple en una línea es:
$check = 9;
ya sea:
echo ($check & 1 ? ''Odd'' : ''Even'');
o:
echo ($check % 2 ? ''Odd'' : ''Even'');
funciona muy bien
Todos los números pares divididos por 2 darán como resultado un número entero
$number = 4;
if(is_int($number/2))
{
echo("Integer");
}
else
{
echo("Not Integer");
}
Tenías razón al pensar que mod era un buen lugar para comenzar. Aquí hay una expresión que devolverá verdadero si $number
es par, falso si es impar:
$number % 2 == 0
Funciona para todos los integerPHP , vea también PHP Operadores Aritméticos .
Ejemplo:
$number = 20;
if ($number % 2 == 0) {
print "It''s even";
}
Salida:
Es incluso
$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'';
(bool)($number & 1)
o
(bool)(~ $number & 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.";
}
//for numbers n [0,1,2,3,4....]
if((n+2)%2==1) {
//odd
}else {
//even
}
Cero es un número par. En otras palabras, su paridad (la calidad de un número entero que es par o impar) es par. La forma más sencilla de demostrar que cero es par es verificar que se ajuste a la definición de "par": es un múltiplo entero de 2, específicamente 0 × 2. Como resultado, cero comparte todas las propiedades que caracterizan los números pares: 0 es divisible por 2, 0 está rodeado en ambos lados por números impares, 0 es la suma de un entero (0) consigo mismo, y un conjunto de 0 objetos se puede dividir en dos conjuntos iguales. de http://en.wikipedia.org/wiki/Parity_of_zero