检查给定的数字在PHP中是偶数、奇数还是两者都不是?

检查给定的数字在PHP中是偶数、奇数还是两者都不是?,php,floating-point,numbers,integer,Php,Floating Point,Numbers,Integer,如何使用PHP获取一个数字是偶数还是奇数,或者两者都不是(使用十进制,如1.5)?我知道有像*,/这样的操作符,但它们不起作用。 这里有一个尝试(当然没有)(只是为了找出它是否是偶数): 怎么样 function even($n) { if (!is_int($n)) {return 'n';} return !($n % 2); } even(1); // false; even(2); // true; even(1.5); // 'n' 这里的危险在于,如果将“n”用作

如何使用PHP获取一个数字是偶数还是奇数,或者两者都不是(使用十进制,如
1.5
)?我知道有像
*
/
这样的操作符,但它们不起作用。
这里有一个尝试(当然没有)(只是为了找出它是否是偶数):

怎么样

function even($n) {
    if (!is_int($n)) {return 'n';}
    return !($n % 2);
}

even(1); // false;
even(2); // true;
even(1.5); // 'n'
这里的危险在于,如果将“n”用作布尔值,“n”将计算为
false
。最好返回一些特定的常量,而不是true或false。OP没有指定返回值应该是什么。

如何

function even($n) {
    if (!is_int($n)) {return 'n';}
    return !($n % 2);
}

even(1); // false;
even(2); // true;
even(1.5); // 'n'
这里的危险在于,如果将“n”用作布尔值,“n”将计算为
false
。最好返回一些特定的常量,而不是true或false。OP没有指定返回值应该是什么。

如果给定变量是数字,则返回true

如果给定变量是整数,则返回true

模运算符
%
可用于确定整数是偶数还是奇数:

$num % 2 == 0 // returns true if even, false if odd
如果给定变量是数字,则返回true

如果给定变量是整数,则返回true

模运算符
%
可用于确定整数是偶数还是奇数:

$num % 2 == 0 // returns true if even, false if odd

首先检查给定的数字是否为整数。并按位
检查它是偶数还是奇数。这里有一个例子

if (is_int($n)) {
    if ($n & 1) {
        echo 'Odd!';
    } else {
        echo 'Even!';
    }
} else {
    echo "Not a Integer!";
}

希望这有帮助。

首先检查给定的数字是否为整数。并按位
检查它是偶数还是奇数。这里有一个例子

if (is_int($n)) {
    if ($n & 1) {
        echo 'Odd!';
    } else {
        echo 'Even!';
    }
} else {
    echo "Not a Integer!";
}
希望这有帮助。

使用模运算符(
%
)确定整数是否可被2整除。您还需要
abs()
来处理负数,
is_int()
来处理模运算符不能正确处理浮点数的事实。下面是一个示例实现:

function is_even($num) {
    return is_int($num) && abs($num % 2) == 0;
}
function is_odd($num) {
    return is_int($num) && abs($num % 2) == 1;
}
// this last one seems self-explanatory, but if you want it, here it is
function is_neither_even_nor_odd($num) {
    return !is_even($num) && !is_odd($num);
}

// Tests: The following should all output true:
var_dump(
    is_even(0),
    is_even(2),
    is_even(-6),
    is_even(51238238),
    is_odd(1),
    is_odd(-1),
    is_odd(57),
    is_neither_even_nor_odd(1.5),
    is_neither_even_nor_odd(2.5),
    is_neither_even_nor_odd(-0.5),
    is_neither_even_nor_odd(0.00000001)
    );
.

使用模运算符(
%
)确定整数是否可被2整除。您还需要
abs()
来处理负数,
is_int()
来处理模运算符不能正确处理浮点数的事实。下面是一个示例实现:

function is_even($num) {
    return is_int($num) && abs($num % 2) == 0;
}
function is_odd($num) {
    return is_int($num) && abs($num % 2) == 1;
}
// this last one seems self-explanatory, but if you want it, here it is
function is_neither_even_nor_odd($num) {
    return !is_even($num) && !is_odd($num);
}

// Tests: The following should all output true:
var_dump(
    is_even(0),
    is_even(2),
    is_even(-6),
    is_even(51238238),
    is_odd(1),
    is_odd(-1),
    is_odd(57),
    is_neither_even_nor_odd(1.5),
    is_neither_even_nor_odd(2.5),
    is_neither_even_nor_odd(-0.5),
    is_neither_even_nor_odd(0.00000001)
    );

这很简单。模(%)是您想要的运算符,它确定如果x除以y,是否会有余数。。。例如(3%2=1)和(4%2=0)。 这也是以前问过的一个很常见的问题,你只需要看看你的数字,$n%2是否等于0


这很简单。模(%)是您想要的运算符,它确定如果x除以y,是否会有余数。。。例如(3%2=1)和(4%2=0)。 这也是以前问过的一个很常见的问题,你只需要看看你的数字,$n%2是否等于0


我是否遗漏了什么-我不明白为什么这个
返回'n'
false相比是存在的?这是不是表示“都不是”?如果参数不是整数,则返回“都不是”的“n”-OP在这一点上不是很清楚。嗯。。与混合返回类型相比,用于返回值的某些常量可能更干净(例如,
偶数
奇数
两者都不
)。我很想删除那张否决票,但不幸的是,它不是我的。我是不是遗漏了什么?我不明白为什么这张
返回'n'
错误相比存在?这是不是表示“都不是”?如果参数不是整数,则返回“都不是”的“n”-OP在这一点上不是很清楚。嗯。。与混合返回类型相比,用于返回值的某些常量可能更干净(例如,
偶数
奇数
两者都不
)。我很想删除下一票,但不幸的是,它不是我的。模运算符不能用非整数信任:
2.5%2==0/=>true
模运算符不能用非整数信任:
2.5%2==0/=>true
回报人情,既然你在我的答案中指出了这一点:
$num%2==0
对于2.5这样的非整数也会返回true…回报你的好意,既然你在我的答案中指出了这一点:
$num%2==0
对于2.5这样的非整数也会返回true。。。