Вычисление четных чисел php

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

Каков самый простой самый простой способ узнать, является ли число / переменная нечетной или даже PHP? Это как-то связано с модом?

Я пробовал несколько скриптов, но .. Google не доставляет в настоящий момент.

Вы были правы, думая, что мода – хорошее место для начала. Вот выражение, которое вернет true, если $number is even, false, если нечетно:

Работает для каждого целочисленного значения PHP , см. Также Арифметические операторы PHP .

$number = 20; if ($number % 2 == 0)

Другим вариантом является простая проверка бит.

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

Другой вариант – проверить, является ли последняя цифра четным числом:

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

Или сделать это быстрее ( иногда проигрывает mod operator ):

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

Вот тест времени как доказательство моих результатов.

Я немного is_int и обнаружил, что между mod, is_int и & -оператором мода является самым быстрым, за которым следует & -оператор. is_int почти в 4 раза медленнее, чем мода.

Для целей тестирования я использовал следующий код:

$number = 13; $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before." seconds mod
"; $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before." seconds is_int
"; $before = microtime(true); for ($i=0; $i $after = microtime(true); echo $after-$before." seconds & operator
";

Результаты, полученные мной, были довольно последовательными. Вот пример:

0.041879177093506 seconds mod 0.15969395637512 seconds is_int 0.044223070144653 seconds & operator 

Хотя все ответы хороши и правильны, простое решение в одной строке:

Читайте также:  This and prototype javascript

Все четные числа, деленные на 2, приведут к целому числу

$number = 4; if(is_int($number/2)) < echo("Integer"); >else
//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://ru.wikipedia.org/wiki/Parity_of_zero

Я делаю предположение, что есть счетчик уже на месте. в $ i, который увеличивается в конце цикла. Это работает для меня, используя сокращенный запрос.

Итак, что это делает, ну, он запрашивает заявление, которое мы делаем, в сущности, $ i является нечетным, в зависимости от того, будет ли его истинное или ложное определять, что возвращается. Возвращаемое значение заполняет нашу переменную $ row_pos

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

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

Полный пример того, что я использую, отмечает, что идентификатор имеет счетчик, примененный к нему, и класс использует мой нечетный / равномерный результат:

$i=0; foreach ($a as $k => $v) < $row_pos = ($i & 1) ? 'odd' : 'even'; echo "- - \n"; $i++; > 

в общем, это дает мне очень простой способ создать симпатичную таблицу.

Читайте также:  Пример json файла python

Этот код проверяет, является ли число нечетным или даже на PHP. В примере $a равно 2 и вы получите четное число. Если вам нужно нечетное значение, измените значение $a

$a=2; if($a %2 == 0)< echo "

This Number is $a Even

"; >else< echo "

This Number is $a Odd

"; >

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

$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.
"; >else< print "The input '".$pArg."' is odd.
"; > >else< print "The input '".$pArg."' is not a number.
"; > > 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 . "
"; > $after = microtime(true); echo $after-$before. 'seconds';
$number = 10; switch ($number%2)

Источник

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

Чтобы найти четные числа в PHP, вы можете использовать цикл for и оператор if . Вот пример:

for ($i = 0; $i = 10; $i++)  if ($i % 2 == 0)  echo $i . " "; > > 

Этот код будет выводить все четные числа от 0 до 10.

Вы можете также использовать цикл while или do-while для решения этой задачи. Обратите внимание, что вы должны увеличивать значение переменной цикла, чтобы избежать бесконечного цикла.

$i = 0; while ($i = 10)  if ($i % 2 == 0)  echo $i . " "; > $i++; > 
$i = 0; do  if ($i % 2 == 0)  echo $i . " "; > $i++; > while ($i = 10);

Источник

Оцените статью