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

php在特定条件下假定string/int为false,php,Php,在项目中,我必须检查一个变量的条件 条件为真 $key = ($condition)?$key+1:'no' if($key!='no') //evaluated false 我不能将$key设置为false,因为在某个时候它会变成0,所以在那个时候php将执行它false。 但是当我这么做的时候 $key = ($condition)?$key+1:78857555555555 然后向 if($key!=78857555555555) 估计正确 为什么??这个问题是否像$key是一个i

在项目中,我必须检查一个变量的条件 条件为真

$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,而我在上面的第一个中将它赋给一个字符串。我没有试过打字。因为它会增加两三行


对不起,我误解了这个问题。这是检查对象类型的问题,所以添加一个额外的=解决了这个问题

我看不出有什么问题:

(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

这对我来说都是合理的…

你应该使用
==。它还将检查类型

但是所有的计算结果都为false,我不能将$key设置为false,因为在某个时刻它变成了0,所以在那个时候php将执行它false。但是当我这么做的时候

您可以将$key设置为false

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

请使用运算符==!==所以它也会检查对象的类型。例如:如果($key!==7885755555),我回答得更快:)+1@Yair.R是的,你回答得更快:D