Testați dacă numărul este par sau impar

Ceea ce este cea mai simplă și cea mai de bază mod de a afla dacă un număr/variabilă este par sau impar in PHP? Este ceva de-a face cu mod?

Am'am încercat câteva script-uri dar.. google e't de livrarea la moment.

Comentarii la întrebare (2)
Soluția

Ai avut dreptate în mod de gândire a fost un loc bun pentru a începe. Aici este o expresie care se va întoarce adevărat dacă `$numărul este chiar, false dacă ciudate:

$number % 2 == 0

Lucrări pentru fiecare integerPHP valoarea vedea la fel de bine Operatori AritmeticiPHP.

Exemplu:

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

Ieșire:

It's chiar

Comentarii (7)

O altă opțiune este un simplu bit de verificare.

n & 1

de exemplu:

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

Da, folosind în mod

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

În timp ce toate răspunsurile sunt corecte și bune, soluție simplă într-o singură linie este:

$check = 9;

fie:

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

sau:

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

funcționează foarte bine.

Comentarii (0)

O altă opțiune este de a verifica dacă ultima cifră este un număr par :

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

Sau să-l facă mai repede, folosesc isset () "în loc 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
}

Sau pentru a face mai repede (bate `mod operator la times) :

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

Aici este test ca o dovadă de concluziile mele.

Comentarii (7)
(bool)($number & 1)

sau

(bool)(~ $number & 1)
Comentarii (3)

Am făcut un pic de testare, și a constatat că între mod, is_int " și " &-operator de mod este cel mai rapid, urmat îndeaproape de &-operator. is_int e aproape 4 ori mai lent decât în mod.

Am folosit urmatorul cod pentru scopuri de testare: <?php


$number = 13;

$before = microtime(true);
for ($i=0; $i
Comentarii (1)

Toate numere împărțite la 2 va duce la un număr întreg

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

PHP este de conversie de nul și un șir gol în mod automat la zero. Ce se întâmplă cu modulo fel de bine. Pentru acestea va codului

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

cu valoarea $numar = '' sau $numar = null rezultatul în realitate. Am testat-o pentru acestea, ceva mai extinsă:

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

Această funcție returnează 1 pentru orice număr impar, 0 pentru orice număr par și falsă atunci când nu este un număr. Intotdeauna mi-am scrie === true sau === false să mă las (și alți programatori) știu că testul este destinat.

Comentarii (0)

Fac o presupunere că există un contor deja în vigoare. în $i care este incrementat la sfârșitul unei bucle, Acest lucru funcționează pentru mine folosind o prescurtare de interogare.

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

Deci, de ce face asta, ei bine aceasta nelamurire declarația se face în esența $i este impar, în funcție de dacă adevărat sau fals va decide ce va fi înapoiat. Valoarea returnată populează nostru variabila $row_pos

Utilizarea mea este să puneți-l în interiorul bucla foreach, chiar înainte să am nevoie de ea, Acest lucru îl face foarte eficient cu o linie sa-mi dea clasa corespunzătoare nume, aceasta este pentru că am deja un contor pentru id's pentru a utiliza mai târziu în program. Acesta este un scurt exemplu de cum mă voi folosi de această parte.

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

Asta-mi dă ciudat și chiar clase pe fiecare rând, ca să mă pot folosi de clasa corectă și dungă mea tipărite rezultate pe pagina.

De exemplu complet de ceea ce am folosi rețineți id-ul are contor aplică și la clasa a-mi par/impar rezultat a fost aplicat.:

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

în rezumat, acest lucru îmi oferă un mod foarte simplu pentru a crea o destul de tabel.

Comentarii (0)
//for numbers n [0,1,2,3,4....]

if((n+2)%2==1) {
   //odd
}else {
  //even
}

Zero este un număr par. Cu alte cuvinte, ei paritate—calitatea unui număr întreg de a fi par sau impar—este chiar. Cel mai simplu mod de a dovedi că zero este chiar este de a verifica dacă se potrivește definiției de "și": ea este un multiplu întreg de 2, mai exact 0 × 2. Ca rezultat, zero, cotele tuturor proprietăților care caracterizează chiar numere: 0 este divizibil cu 2, 0 este înconjurată pe ambele părți de numere impare, 0 este suma dintre un număr întreg (0) cu sine, și un set de 0 obiecte pot fi împărțite în două seturi de șanse. din http://en.wikipedia.org/wiki/Parity_of_zero

Comentarii (1)

Acest cod verifică dacă numărul este par sau impar in PHP. În exemplul de $o e " 2 " și veți obține chiar și numărul de telefon. Dacă ai nevoie de ciudat atunci schimba $o valoare

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

Încercați acest lucru,

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

Încercați această unul cu #câmpul de Intrare

<?php
    //checking even and odd
    echo '';
    echo "<input type='text' name='num'>\n";
    echo "Check\n";
    echo "";

    $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.";
    }
    }
?>
Comentarii (3)