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
Хотя все ответы хороши и правильны, простое решение в одной строке:
Все четные числа, деленные на 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++; >
в общем, это дает мне очень простой способ создать симпатичную таблицу.
Этот код проверяет, является ли число нечетным или даже на 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);