【发布时间】:2014-02-06 11:13:35
【问题描述】:
一段时间以来,我一直在使用 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 中被标记为语法错误,但不是全部,这让我开始思考。
我想知道这里发生了什么,因为这极大地限制了编码。但正如我所说,我可能忽略了一件完全简单的事情。
编辑:脚本在没有显示任何错误或警告的情况下中断,它只是在该行停止工作
编辑2: 我拿了 sn-p 并自行执行。
$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 类(否则无论如何都会出现错误),它已经在系统范围内使用并且正常工作,只是删除了该行以在此处发布。 我认为没有人真正有线索,因此试图找到一个简单的解决方案,这没问题,因为我认为这只是一件简单的事情。但我意识到我已经尝试了你在这种情况下建议或会做的一切。
【问题讨论】:
-
在比较之前,您是否尝试过打印 $moveSuccess 和 $isNotSet 的值?
-
是的,它在代码/cmets 中说 ;)
-
在您的条件中添加
|| 1并检查它现在是否进入 if 语句。 -
不可能是语法错误,否则整个事情根本不会运行。
if语句不会简单地“中断”,无论条件如何。问题可能出在您未显示的其他代码中。 -
无法复制:3v4l.org/iIkT5
标签: php if-statement boolean