PHP中的逻辑,为什么会发生这种情况?
为什么要输出'True',肯定PHP中的逻辑,为什么会发生这种情况?,php,Php,为什么要输出'True',肯定if()测试会失败,因为它是阴性的?-1在布尔上下文中被视为True。请参阅PHP手册。在PHP中只有数字0值为false:这是因为您只能测试true或false False定义为0,而true定义为而非0。所以-1与正确的相当于1、2、3等 为了确保得到正确的结果,请进行真正的比较。0为假,其他一切为真。这就是为什么 在PHP中,-1是正确的,因为它不是0。使用真实的比较,如: -1 True if(x()看看这里: var_dump(x());//输出:int
if()
测试会失败,因为它是阴性的?-1
在布尔上下文中被视为True
。请参阅PHP手册。在PHP中只有数字0值为false:这是因为您只能测试true或false
False定义为0
,而true定义为而非0
。所以-1
与正确的相当于1、2、3等
为了确保得到正确的结果,请进行真正的比较。0为假,其他一切为真。这就是为什么 在PHP中,-1
是正确的,因为它不是0
。使用真实的比较,如:
-1
True
if(x()看看这里:
var_dump(x());//输出:int(-1)
并强制转换为布尔值:
var_dump((bool)x());//输出:bool(true)
-1
在PHP中不是false
。您可以检查它是否是>0
?所有0都是false,其他都是true。在PHP中转换为布尔值
要将值显式转换为布尔值,请使用(bool)或(boolean)强制转换。但是,在大多数情况下,强制转换是不必要的,因为如果运算符、函数或控件结构需要布尔参数,则会自动转换值
另请参见键入杂耍
转换为布尔值时,以下值被视为FALSE:
布尔值本身是假的
整数0(零)
浮动0.0(零)
空字符串和字符串“0”
零元素数组
具有零成员变量的对象(仅限PHP 4)
特殊类型NULL(包括未设置的变量)
从空标记创建的SimpleXML对象
其他所有值均视为真(包括任何资源)
警告
-1被认为是真的,就像任何其他非零(无论是负数还是正数)数字一样
Source那么我怎样才能只测试阳性结果呢?@Chud37if(x()>0)
应该可以帮你解决这个问题。if(x()>=0)
如果您还想检查0(包括0)。我的另一个函数要么返回负数,要么返回字符串。所以我可以只返回字符串吗?您不应该在单个函数中返回不同的类型。如果您返回FALSE或int/string,也可以,但您永远不应该返回int或string。
-1
True
if(x() <= 0) { ...do stuff... }