【问题标题】:PHP if status with OR not behaving as expecting [duplicate]PHP如果状态与OR不符合预期[重复]
【发布时间】:2018-12-10 10:13:06
【问题描述】:

我正在尝试在 foreach 循环中使用 if 语句来检查数组的值是否未“完成”或“正在执行”

$array = [
            $request1 = [
                            'title' => "foo",
                            'status' => 'finished'
                        ],
            $request2 = [
                            'title' => "bar",
                            'status' => 'executing'
                        ],  
            $request2 = [
                            'title' => "foo bar",
                            'status' => 'foo'
                        ]
        ];


foreach ($array as $request) {
    if ($request['status'] != 'finished' || $request['status'] != 'executing') {
        echo $request['title'];
    } 
}

我希望这只会返回“foo bar”,但它会返回“foobarfoo bar” 我在这里做错了什么?

https://3v4l.org/VTVO5

【问题讨论】:

  • $request['status'] 不能同时是finished executing,所以它不等于永远都是真的。

标签: php arrays if-statement foreach


【解决方案1】:

条件应使用 AND 运算符,否则条件始终为真。

if ($request['status'] != 'finished' && $request['status'] != 'executing')

变量总是与两个值中的至少一个不同。

【讨论】:

  • 但它要么已完成,要么正在执行,而不是两者兼而有之
  • “不等于完成或不等于执行”,想想@Michael
  • 你不是在检查值是否相等,而是在检查它是否不等于值。
  • 哦,我看看我是否会检查另一个变量,例如“状态”和“标题”,它应该是 ||/或
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
相关资源
最近更新 更多