Який найпростіший і найпростіший спосіб дізнатися, чи число / змінна непарна чи парна в PHP? Це щось стосується мода?
Я спробував кілька сценаріїв, але .. Google наразі не постачає.
& $a=3; if($a&1){echo 'odd';}else{echo 'even';} //returns 'odd'
Який найпростіший і найпростіший спосіб дізнатися, чи число / змінна непарна чи парна в PHP? Це щось стосується мода?
Я спробував кілька сценаріїв, але .. Google наразі не постачає.
& $a=3; if($a&1){echo 'odd';}else{echo 'even';} //returns 'odd'
Відповіді:
Ви мали рацію, думаючи, що мод - це гарне місце для початку. Ось вираз, який поверне справжнє, якщо $numberпарне, хибне, якщо непарне:
$number % 2 == 0
Працює для кожного цілого значення PHP , див. Також Арифметичні оператори PHP .
Приклад:
$number = 20;
if ($number % 2 == 0) {
print "It's even";
}
Вихід:
Це навіть
Ще один варіант - проста перевірка бітів.
n & 1
наприклад:
if ( $num & 1 ) {
//odd
} else {
//even
}
(bool)($number & 1)
або
(bool)(~ $number & 1)
if (~string.indexOf("@")) {}замість if (string.indexOf("@") !== -1) {}. Я вважаю за краще, щоб умови призводили до простого істинного чи хибного. Але так, це може трохи заплутати людей, які не знайомі з цим синтаксисом.
Ще один варіант - перевірити, чи є остання цифра парним числом:
$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
}
Ось тест часу як доказ моїх висновків.
in_arrayякий іноді б'є оператор мод.
$num & 1:). Ви також можете зробити це шістнадцятковим: масив (0, 2, 4, 6, 8, A, C, E, F): D.
Я трохи тестував і виявив, що між модом is_intта &оператором, мод є найшвидшим, за ним уважно слідкує & -оператор.
is_intмайже в 4 рази повільніше, ніж мод.
Я використовував наступний код для тестування:
$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>";
Результати, які я отримав, були досить послідовними. Ось зразок:
0.041879177093506 seconds mod
0.15969395637512 seconds is_int
0.044223070144653 seconds & operator
//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://en.wikipedia.org/wiki/PITY_of_zero
Цей код перевіряє, чи число непарне або парне в PHP. У прикладі $aє 2і ви отримуєте парне число. Якщо вам потрібен непарний, то змініть $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>";
}
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.<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;
}
Ця функція повертає 1 для будь-якого непарного числа, 0 для будь-якого парного числа і хибного, коли це не число. Я завжди пишу === true або === false, щоб дозволити собі (та іншим програмістам) знати, що тест виконаний за призначенням.
Перевірте парний чи непарний номер без використання умови та заяви циклу.
Ця робота для мене ..!
$(document).ready(function(){
$("#btn_even_odd").click(function(){
var arr = ['Even','Odd'];
var num_even_odd = $("#num_even_odd").val();
$("#ans_even_odd").html(arr[num_even_odd % 2]);
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title>Check Even Or Odd Number Without Use Condition And Loop Statement.</title>
</head>
<body>
<h4>Check Even Or Odd Number Without Use Condition And Loop Statement.</h4>
<table>
<tr>
<th>Enter A Number :</th>
<td><input type="text" name="num_even_odd" id="num_even_odd" placeholder="Enter Only Number"></td>
</tr>
<tr>
<th>Your Answer Is :</th>
<td id="ans_even_odd" style="font-size:15px;color:gray;font-weight:900;"></td>
</tr>
<tr>
<td><input type="button" name="btn_even_odd" id="btn_even_odd" value="submit"></td>
</tr>
</table>
</body>
</html>
Я роблю припущення, що лічильник вже існує. в $ i, що збільшується в кінці циклу. Це працює для мене за допомогою скорочення запиту.
$row_pos = ($i & 1) ? 'odd' : 'even';
Отже, що це робить, і він запитує твердження, яке ми робимо по суті $ i, це не дивно, залежно від того, чи буде його істинним чи хибним рішенням, що повертається. Повернуте значення заповнює нашу змінну $ row_pos
Я використовую це для того, щоб розмістити його всередині циклу foreach, безпосередньо до того, як мені це потрібно. Це робить дуже ефективним один вкладиш, щоб дати мені відповідні імена класів, це тому, що у мене вже є лічильник для ідентифікаторів, щоб використовувати пізніше в програмі. Це короткий приклад того, як я буду використовувати цю частину.
<div class='row-{$row_pos}'> random data <div>
Це дає мені непарні і парні класи в кожному рядку, тому я можу використовувати правильний клас і накреслити свої друковані результати вниз по сторінці.
Повний приклад того, що я використовую, зверніть увагу на ідентифікатор, до якого застосовано лічильник, і клас застосував до мене незвичайний / парний результат:
$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++;
}
підсумовуючи це, це дає мені дуже простий спосіб створити гарну таблицю.
Спробуйте це,
$number = 10;
switch ($number%2)
{
case 0:
echo "It's even";
break;
default:
echo "It's odd";
}
Попередження, з певних причин, ця умова не оцінюється як ІСТИНА в оголошенні циклу for , як показано нижче:
На початку кожної ітерації
expr2оцінюється. Якщо вона оцінюється як TRUE, цикл продовжується і вкладені оператори (и) виконуються. Якщо він оцінюється як FALSE, виконання циклу закінчується.
Це НЕ працює:
for ($i=0; $i % 2 === 1 && $i < count($str); $i++){
// echo "-----------\n";
}
Це НЕ працює:
for ($i=0; ($i % 2 === 1) && $i < count($str); $i++){
// echo "-----------\n";
}
Це НЕ працює:
for ($i=0; ($i % 2) === 1 && $i < count($str); $i++){
// echo "-----------\n";
}
Це працює добре :
for ($i=0; $i<count($str); $i++){
if ($i % 2 === 1) {
// echo "-----------\n";
}
}
$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';
//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.";
}
Спробуйте це з полем # Введення
<?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.";
}
}
?>