【问题标题】:php - issue with booleans in if statementphp - if 语句中的布尔值问题
【发布时间】: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


【解决方案1】:

应该是:

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

代替:

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

【讨论】:

  • 类型完全正确,是的。我都试过了,有和没有额外的括号。
猜你喜欢
  • 2021-08-03
  • 2014-09-12
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2015-12-21
  • 2018-04-17
  • 2014-08-19
相关资源
最近更新 更多