php - if语句中的布尔问题

时间:2014-02-06 11:13:35

标签: php if-statement boolean

我一直在使用php遇到一个奇怪的问题并且想知道是否有人可以提供帮助。这可能是我看不到的一件非常小的蠢事。

“if”语句在我使用&&和||用于逻辑表达式。 最新的例子:

$isNotSet = !isset($moved); // var_dump prints false
$moveSuccess = $moved instanceof SuccessNotification; // var_dump prints true
if(($isNotSet == true) || ($moveSuccess == true)){

脚本总是在该行中断,并且不再继续。在此之后它不会执行任何操作。 我尝试了很多东西,例如

if(!isset($moved) || $moved instanceof SuccessNotification){

if(!isset($moved) === true || $moved instanceof SuccessNotification){

$isNotSet = !isset($moved);
$moveSuccess = $moved instanceof SuccessNotification;
if($isNotSet === true || $moveSuccess === true){

一切都行不通。我知道他们都是一样的,我只是想消除错误轨道的想法。其中一些例子在Netbeans中被标记为语法错误,但并非所有这些都让我思考。

我想知道这里发生了什么,因为这限制了很多编码。但正如我所说,我可能忽略了一件非常简单的事情。

编辑:脚本在没有显示任何错误或警告的情况下中断,它只是在该行停止工作

EDIT2: 我拿走了片段并自行执行了。

$moved = new SuccessNotification($code, $title, $message);
echo 1;
$isNotSet = !isset($moved);
echo 2;
$moveSuccess = $moved instanceof SuccessNotification;
echo 3;
if(($isNotSet === true) || ($moveSuccess === true) || 1){
    echo 4;    
}else{
    echo 5;    
}
echo 6;

这打印“123”,没有别的。是的,我已经包含了SuccessNotification类(否则会出现错误),这已经在系统范围内使用并正常工作,只是删除了该行以便在此处发布。 我认为没有人真正有线索因此试图找到一个简单的解决方案,因为我认为这只是一个简单的事情。但是我意识到我已经尝试了你在这种情况下建议或将要做的一切。

1 个答案:

答案 0 :(得分:-1)

不应该是:

if(($isNotSet === true) || ($moveSuccess === true)){

而不是:

if(($isNotSet == true) || ($moveSuccess == true)){