在项目中我必须检查一个变量的条件。让我们说变量是$ 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:对不起,我误解了这个问题。这是检查对象类型的问题所以多加一个=解决它。
答案 0 :(得分:1)
您应该使用!==
。它也会检查类型。
但所有评估为false我不能将$ key设置为false,因为在某些时候它变为0所以那时php将执行false。但是当我这样做时
您可以将$ key设置为false。
$key = 0;
var_dump($key !== false); // true
var_dump($key != false); // false
答案 1 :(得分:0)
我在这里看不到问题:
(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
这对我来说都是合理的......