[英]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.