为什么条件语句在本例中不起作用


Why are conditional statements not working in this example?

我对这段代码有点困惑。$this->product是一个具有12个变量的对象。var_dump表示$key是一个字符串。

foreach ($this->product as $key => $val) {
    if (($key !== "id") || ($key !== "weight")) {
        var_dump($key);
    } else {
        print_r("Success" . $key);
    }
}

尽管"id"answers"weight"作为var名称出现,并在$key中表示为字符串,但它们并没有被这个条件捕获。有人有什么想法吗?

我想你想做的是:

foreach ($this->product as $key => $val) {
    if (($key !== "id") && ($key !== "weight")) {
        var_dump($key);
    } else {
        print_r("Success" . $key);
    }
}

(($key !== "id") || ($key !== "weight"))总是真的,$key不能同时是"id"answers"weight"。

如果key=="id",则它不=="weight",因此它将始终通过If检查。

它永远不会到达else语句,因为在任何情况下键都不等于"id"或不等于"weight"。

将条件语句更改为$key!=="id"&amp$键!=="重量"

您的条件是在$key不是"id"或不是"weight"的情况下捕获,因此它将捕获所有内容,因为$key不能两者都是。

您打算使用:

if (($key !== "id") && ($key !== "weight")) {
    var_dump($key);
} else {
    // $key is "id" or "weight"
    print_r("Success" . $key);
}

您可能不想执行$key !== 'id',而想执行类似于strcmp($key, 'id') != 0的字符串比较。当字符串匹配时,strcmp函数返回0。请参阅此处的文档http://php.net/manual/en/function.strcmp.php