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

时间:2015-10-04 09:35:50

标签: php

在项目中我必须检查一个变量的条件。让我们说变量是$ 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:对不起,我误解了这个问题。这是检查对象类型的问题所以多加一个=解决它。

2 个答案:

答案 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

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