繁体   English   中英

php 在某些条件下假定 string/int 为 false

[英]php assumes string/int a false on certain condition

在项目中,我必须检查一个变量的条件。假设变量是 $key 并且 $condition 为真

$key = ($condition)?$key+1:'no'

if($key!='no') //evaluated false

我不能将 $key 设置为 false,因为在某些时候它会变成 0,所以那时 php 会执行它 false。 但是当我这样做的时候

$key = ($condition)?$key+1:78857555555555

然后检查

if($key!=78857555555555)

评估为真

为什么? 是否有问题,如 $key 是一个 int 并且我将它分配给上面第一个中的一个字符串。 我没有尝试类型转换。 因为它会增加两三行。

P.S:对不起,我误解了这个问题。 这是检查对象类型的问题,因此添加一个额外的 = 解决了它。

你应该使用!== 它也会检查类型。

但是所有评估为 false 我不能将 $key 设置为 false 因为在某些时候它变为 0 所以那时 php 将执行它 false。 但是当我这样做的时候

您可以将 $key 设置为 false。

$key = 0;
var_dump($key !== false);  // true
var_dump($key != false);   // false

我在这里没有看到问题:

(null!=null) will obviously evaluate to false
isset(null) does evaluate to false according to the documentation
($key!='no') also will evaluate to false, obviously

这一切对我来说都是合理的......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM