Как найти нечетные числа в php

What is the simplest most basic way to find out if a number/variable is odd or even in PHP?
Is it something to do with mod?

I’ve tried a few scripts but.. google isn’t delivering at the moment.

Tim Cooper's user avatar

Tim Cooper

157k38 gold badges327 silver badges279 bronze badges

asked Oct 31, 2011 at 20:17

user1022585's user avatar

2

You were right in thinking mod was a good place to start. Here is an expression which will return true if $number is even, false if odd:

$number % 2 == 0

Works for every integerPHP value, see as well Arithmetic OperatorsPHP.

Example:

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

Output:

It’s even

Francisco Luz's user avatar

answered Oct 31, 2011 at 20:18

Tim Cooper's user avatar

Tim CooperTim Cooper

157k38 gold badges327 silver badges279 bronze badges

7

Another option is a simple bit checking.

n & 1

for example:

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

answered Feb 5, 2012 at 23:10

Pawel Dubiel's user avatar

Pawel DubielPawel Dubiel

18.4k3 gold badges40 silver badges58 bronze badges

4

Yes using the mod

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

answered Oct 31, 2011 at 20:19

Aaron W.'s user avatar

Aaron W.Aaron W.

9,2442 gold badges33 silver badges45 bronze badges

While all of the answers are good and correct, simple solution in one line is:

$check = 9;

either:

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

or:

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

works very well.

answered May 9, 2016 at 15:58

Tarik's user avatar

TarikTarik

4,22037 silver badges35 bronze badges

1

(bool)($number & 1)

or

(bool)(~ $number & 1)

answered Jan 16, 2013 at 10:16

Olegs's user avatar

OlegsOlegs

811 silver badge1 bronze badge

4

I did a bit of testing, and found that between mod, is_int and the &-operator, mod is the fastest, followed closely by the &-operator.
is_int is nearly 4 times slower than mod.

I used the following code for testing purposes:

$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>";

The results I got were pretty consistent. Here’s a sample:

0.041879177093506 seconds mod
0.15969395637512 seconds is_int
0.044223070144653 seconds & operator

answered Aug 22, 2013 at 10:15

Ruben Coolen's user avatar

Ruben CoolenRuben Coolen

3761 gold badge5 silver badges13 bronze badges

2

Another option is to check if the last digit is an even number :

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

Or to make it faster, use isset() instead of 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
}

Or to make it more faster (beats mod operator at times) :

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

Here is the time test as a proof to my findings.

answered Oct 10, 2013 at 16:40

Subin's user avatar

SubinSubin

3,4261 gold badge34 silver badges63 bronze badges

8

PHP is converting null and an empty string automatically to a zero. That happens with modulo as well. Therefor will the code

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

with value $number = » or $number = null
result in true.
I test it therefor somewhat more extended:

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

This function returns 1 for any odd number, 0 for any even number and false when it is not a number. I always write === true or === false to let myself (and other programmers) know that the test is as intended.

answered Jun 1, 2015 at 8:12

Loek Bergman's user avatar

Loek BergmanLoek Bergman

2,17220 silver badges18 bronze badges

7

All even numbers divided by 2 will result in an integer

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

answered Jul 5, 2012 at 19:39

David S.'s user avatar

1

I am making an assumption that there is a counter already in place. in $i which is incremented at the end of a loop, This works for me using a shorthand query.

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

So what does this do, well it queries the statement we are making in essence $i is odd, depending whether its true or false will decide what gets returned. The returned value populates our variable $row_pos

My use of this is to place it inside the foreach loop, right before i need it, This makes it a very efficient one liner to give me the appropriate class names, this is because i already have a counter for the id’s to make use of later in the program. This is a brief example of how i will use this part.

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

This gives me odd and even classes on each row so i can use the correct class and stripe my printed results down the page.

The full example of what i use note the id has the counter applied to it and the class has my odd/even result applied to it.:

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

in summary, this gives me a very simple way to create a pretty table.

answered Jul 13, 2014 at 19:28

CodingInTheUK's user avatar

Try this,

$number = 10;
 switch ($number%2)
 {
 case 0:
 echo "It's even";
 break;
 default:
 echo "It's odd";
 }

answered May 24, 2016 at 23:59

Sajjad Hossain's user avatar

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

answered Feb 13, 2016 at 9:39

user2610558's user avatar

$number %2 = 1 if odd… so don’t have to use not even…

$number = 27;

if ($number % 2 == 1) {
  print "It's odd";
}

answered Apr 7, 2021 at 15:28

jxwd's user avatar

jxwdjxwd

1792 silver badges6 bronze badges

<?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";
?>

So, the output will be Odd

answered Aug 20, 2021 at 10:52

Balaji's user avatar

BalajiBalaji

271 silver badge7 bronze badges

1

Using Bit Manipulation:
In this method, you will find bit-wise AND of the number with 1. If the bit-wise AND is 1, then the number is odd, else even.

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

The output will be:

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
)

answered Nov 3, 2022 at 11:54

Rashed Hasan's user avatar

Rashed HasanRashed Hasan

3,70910 gold badges40 silver badges81 bronze badges

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

answered Apr 19, 2018 at 6:55

Imran Azim's user avatar

Imran AzimImran Azim

1541 silver badge8 bronze badges

1

Try this one with #Input field

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

answered Apr 19, 2018 at 9:40

Imran Azim's user avatar

Imran AzimImran Azim

1541 silver badge8 bronze badges

3

Two simple bitwise functions, returning a 0 for False and 1 for True.

# is_odd: 1 for odd , 0 for even
odd = number & 1

# is_even: 1 for even , 0 for odd
even = number & 1 ^ 1

Syscall's user avatar

Syscall

19.2k10 gold badges36 silver badges52 bronze badges

answered Feb 15, 2022 at 19:18

cinsight's user avatar

Перейти к содержимому

Проверка числа на четность и нечетность. Введение

Проверка числа на четность и нечетность в phpВ работе, я уже неоднократно сталкивался с необходимостью проверки числа на четность и нечетность, но почему-то не придавал этому особого значения, поэтому не затрагивал данную тему ранее. Но мне уже несколько раз присылали вопросы и просили помочь с задачами, в которых проверка четности числа может помочь в реализации. Поэтому я решил описать проблему и решение в статье.
Рассмотрим самую распространенную задачу, в которой проверка четности числа может все расставить на свои места. Допустим, у нас имеется массив данных, в котором хранится имена и фамилии людей. Необходимо вывести эти данные таким образом, чтобы каждое имя и фамилия начинались с новой строки и каждая вторая строка имела отступ 20 пикселей.

Решение задачи:
Необходимо при выводе каждого элемента массива считать номер элемента, если он четный, то есть 2, 4, 6 и тд, то будем делать отступы.

Проверка числа на четность и нечетность. Код

// массив данных
$array_users = array(
	"Иван Иванов",
	"Иван Петров",
	"Петр Иванов",
	"Петр Петров",
	"Сидор Иванов",
	"Сидор Петров"
);

// вывод данных
$num = 1;
foreach($array_users as $value){
	// проверяем четность
	if(($num % 2) == 0){
		// если четное, то делаем отступ 
		echo "<span style='padding-left: 20px;'>$value</span><br/>";
	}else{
		// если не четное, то просто выводим
		echo "<span>$value</span><br/>";
	}
	$num ++;
}

Задача решена.

Вся суть сводится к тому, что необходимо проверить остаток от деления числа на два. если остаток равен нулю, значит число четное.

$a = 5;
if(($a % 2) == 0){
	echo "Число четное";
}else{
	echo "Число не четное";
}

С помощью такого же кода, можно добавлять стили для каждого третьего, каждого четвертого и тд элемента, только уже сравнивать остаток после деления на 2, 3, 4 и тд.

«четное/нечетное число php«. Определим с помощью php является ли число четным либо нечетным!

Подробно о четном/нечетном числе в php/

  1. Определяем в php четное число:
  2. Выполнение кода проверки четного/нечетного числа php 2
  3. Функция определения четного/нечетного числа php
  1. Определяем в php четное число:

    Не буду повторять, что такое четное число смотрим здесь.
    Из выше изложенной ссылке вы узнали, что любое число, которое делится без остатка на 2 будет четным, для этого вам понадобится php и:

    Немного теории о делении без остатка в php.

    Если вы прочитали выше приведенную теорию, то узнали, что если вы напишите вот такую конструкцию:

    if(«ваше число» % 2 == 0) echo ‘число четное определено php’;

    else echo ‘число не четное определено php’;

    Примеры определения четного/нечетного числа php

    Теперь, в примере рассмотрим код определения «четного/нечетного числа php«, возьмем выше приведенный код и заменим ваше число на … например на 2:

    <?
    if(2 % 2 == 0) echo 'число четное определено php';
    else echo 'число не четное определено php';
    ?>

    Выполнение кода проверки четного/нечетного числа php

    Разместим выше приведенный код прямо здесь:

    число четное определено php

    Аналогичный пример кода проверки четного/нечетного числа php

    Используем число 3:


    <?
    if(3 % 2 == 0) echo 'число четное определено php';
    else echo 'число не четное определено php';
    ?>

    Выполнение кода проверки четного/нечетного числа php

    число не четное определено php

  2. Выполнение кода проверки четного/нечетного числа php 2

    И второй пример определения четности/нечетности числа php… нахождение точки в случае деления с остатком… для этого вам понадобится:

    Условие if.

    Поиск совпадений -substr_count;

    + добавим знак «собачки @», потому, что «substr_count» выдает ошибку если не находит…

    Простой код поиска четности, т.е. точки в числе…

    Код проверки четности/нечетности числа php:

    <?

    $var = 1.5;

    if(@substr_count($var , '.')) echo 'число не четное определено php';

    else echo 'число четное определено php';

    ?>

    Выполнение кода проверки четного/нечетного числа php

    Далее выведем данный код прямо здесь:

    число не четное определено php

    Код №2 проверки четности/нечетности числа php:

    Второй пример… возьмем тот же код и в переменную поместим число 2:

    <?

    $var = 2;

    if(@substr_count($var , '.')) echo 'число не четное определено php';

    else echo 'число четное определено php';

    ?>

    Выполнение кода проверки четного/нечетного числа php

    Определяем число 2 будет ли четным/нечетным:

    число четное определено php

  3. Функция определения четного/нечетного числа php

    Если вам часто приходится определять — это четное/нечетное число в php? то вма нужна функция, которая сомжет это сделать и не нужно на каждое число писать выше приведенный код

    Пример функции определения четного/нечетного числа php

    <?

    function isEven($e)

    {

    $e = $e/2;

    if(substr_count($e, '.')) return 'число не четное определено php ';

    else return 'число четное определено php ';

    }

    echo 'Число 2 : ' .isEven(2) ;

    echo 'Число 3 : ' .isEven(3) ;

    ?>

    Выведем результат работы функции определения четного/нечетного числа php

    Число 2 : число четное определено php

    Число 3 : число не четное определено php

Не благодарите, но ссылкой можете поделиться!

COMMENTS+

 
BBcode


четное число php

Привет!

Заметил, что многие не знают, как можно узнать четное ли число или нечетное в php. А ведь делается это очень просто! Конечно, было бы проще, если бы разработчики подготовили для нас самостоятельную функцию, но сотворить такую самому — тоже плевое дело.

Итак, для того, чтобы решить поставленную задачу, легче всего будет использовать деление по модулю. Думаю со школьной скамьи многие помнят, как происходит деление по модулю. Вы делите число, и смотрите, есть ли остаток. Если мы делим четное число, например, на 2, то остатка не будет. А вот если мы поделим 7 на 2, тогда будет остаток.

Исходя из этого можно проследить алгоритм определения четности числа. Если остаток есть — число нечетное. Если остатка нет — число четное. Разберем пример на конкретном практическом уроке.

Как проверить четное ли число в php?

Для этого мы будем использовать следующий код:

$val%2 //если число в переменной $val четное, результат будет 0

$val%2 //если число в переменной $val не четное, результат будет 1

Как Вы поняли, все, что нам осталось — использовать условие.

if($val%2 == 0) {

echo ‘Это четное число!’;

}

else {

echo ‘Число не четное’;

}

Практический пример определения четности числа php

Многие, в том числе и я, любят выделять в таблицах четные колонки. Так пользователь легче воспринимает информацию. Давайте представим, что псевдо-классов у нас нет. Потому что реализовать это через nth-child очень легко.

Сами строки будем выводить через цикл foreach. Зададим еще и счетчик. Это будет переменная, значение которой устанавливаем до цикла, а внутри цикла эта переменная будет увеличиваться на 1. Так же внутри цикла будем проверять, если значение переменной четное, тогда к выводимой строке добавим стиль с фоном. Если же значение нечетное, тогда ничего добавлять не будем.

$val = 0;

foreach ($table as $tbl) {

$val++;

$val%2 == 0 ? print ‘<tr class=»even»>’ : print <tr>;

}

Кто не понял последнюю строку, это обычное условие if/else, просто написанное более быстрым и удобным способом. В результате выполнения этого кода у нас будут нечетные строки стандартного цвета, а четные блоки получат класс even, и уже в css можно будет добавить этому классу необходимых стилей.

Вот и все! Теперь мы узнали, как можно легко определить четное ли число в php.

До скорых встреч!

function foo_odd($a, $b)
{
    // Если достигли ограничителя - пришла пора выйти из рекурсии
    if ($a >= $b)
    {
        return;
    }

    // Проверяем, что число нечетное
    if ($a % 2 != 0)
    {
        echo $a . '<br/>';

        // Этот код не будет работать
        // Если изначально вызвать функцию с четным первым аргументом, рекурсия никогда не начнется
        // foo_odd($a + 2, $b);
    }

    // Рекурсивно вызываем функцию, увеличивая число
    foo_odd($a + 1, $b);
}

foo_odd(10, 35);

Собственно, и оригинальная функция тоже работать не будет, если вызвать ее первый раз с нечетным числом. Это легко исправить, если взять мой вариант за основу.

Разумеется, без рекурсии функция еще проще:

function foo_odd($a, $b)
{
    for ($i = $a; $i < $b; $i++)
    {
        if ($i % 2 != 0)
        {
            echo $i.'<br/>';
        }
    }
}

foo_odd(11, 35);

Понравилась статья? Поделить с друзьями:
  • Как найти высоту цилиндра если известна радиус
  • Как найти ноты по фото
  • Как найти проститутку в майкопе
  • Как найти работу киллером
  • Как в инстаграмме найти эффекты для сторис