PHP中的逻辑逻辑

时间:2018-04-17 23:01:47

标签: php operator-keyword

考虑一个返回Integer或false的函数:

我可以通过以下方式检查错误:

if(false == my_function()) {
    echo "do something";
}

但是,如果我想否定逻辑:

if(true == my_function()) {
    echo "do something";
}

第二个示例在所有情况下都评估为true - 即使返回false也是如此。这怎么可能是遥远的。我该如何检查非假回报。

2 个答案:

答案 0 :(得分:2)

真的不是假的。

<?php
function return_false()
{
    return false;
}

var_dump(true == return_false());

输出:

bool(false)

此外:

function return_one()
{
    return 1;
}

function return_zero()
{
    return 0;
}

var_dump(true == return_one());
var_dump(true == return_zero());

输出:

bool(true)
bool(false)

正整数是真实的。 0是假的。

答案 1 :(得分:1)

true不可能等于“虚假”的东西(见PHP boolean documentation)。无论如何,你应该总是使用(不是)相同的(!== / ===)而不是(不)相等(!= / ==)运算符并且只比较相同php中的数据类型,以避免一些奇怪的隐式类型转换。

例如

// DO
if ($number > 0) {...}
if ($number !== 0) {...}
// DON'T
if ($number) {...}
if ($number == true) {...}
if ($number != 0) {...}

// DO
if (count($array) > 0) {...}
if (!empty($array)) {...}
// DON'T
if ($array) {...}
if (count($array)) {...}

// DO
if (strlen($string) > 0) {...}
if (!empty($string)) {...}
// DON'T
if ($string) {...}

// and so on ...