PHP中的非逻辑逻辑逻辑

PHP中的非逻辑逻辑逻辑,php,operator-keyword,Php,Operator Keyword,考虑一个返回整数或false的函数: 我可以通过以下方式检查false: if(false == my_function()) { echo "do something"; } 但是,如果我想否定逻辑: if(true == my_function()) { echo "do something"; } 第二个示例在所有情况下都计算true,即使返回false也是如此。这怎么可能呢。如何检查非假报税表。不可能真等于“假”(请参阅)。无论如何,您应该始终使用(not)ident

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

我可以通过以下方式检查false:

if(false == my_function()) {
    echo "do something";
}
但是,如果我想否定逻辑:

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

第二个示例在所有情况下都计算true,即使返回false也是如此。这怎么可能呢。如何检查非假报税表。

不可能
等于“假”(请参阅)。无论如何,您应该始终使用(not)idential(!=/==)而不是(not)equal(!=/==)运算符,并在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 ...
真的不是假的

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

var_dump(true == return_false());
进一步:

function return_one()
{
    return 1;
}

function return_zero()
{
    return 0;
}

var_dump(true == return_one());
var_dump(true == return_zero());
输出:

bool(false)
bool(true)
bool(false)
正整数是真实的。
0是错误的。

var\u dump(my\u function())返回什么?为什么不直接使用
==
呢?@smith在我的测试中,我返回2,3,false,false,false。但即使是false也会评估为True,事实并非如此。至少对我来说不是。如果我将我的函数设置为返回false,它将执行它应该执行的操作。我想你的功能比我们想象的要多。您应该使用实际代码更新
如果(!empty(my_function())
顺便说一句,您应该避免返回不同的类型如果函数在某个条件下使用,您可以在函数中执行检查并只返回true false您的函数返回“false”吗?我的意思是引号之间的false,就像它是一个字符串,所以它是一个非空值,所以它是真的……你能给我们展示一下我的函数的实现吗?你们两个可能都想对这个问题发表意见,我想你是对的,对此表示抱歉