Old*_*est 4 php mysql arrays if-statement
我正在运行一个非常简单的if语句,它完美无缺,直到我添加了两个额外的|| (或)运营商.
这是我的代码:
if ($planDetails['Company']['name'] != 'company1'
|| $planDetails['PlanDetail']['name'] != 'pd-name1'
|| $planDetails['PlanDetail']['name'] != 'pd-name2') { echo "TEST"; }
Run Code Online (Sandbox Code Playgroud)
我检查了我的数组数据和表值,以确保它们在名称等方面是精确的.这不是踢.我究竟做错了什么?当我删除额外的2 || 选项,第一个参数工作正常,所以我知道我的逻辑是正确的.
这个名字是什么,我在这里做错了.有人请我直截了当!
那么,我在这里读到的是:
If $variable is not equal to A Or $variable is not equal to B
Then echo "TEST"
Run Code Online (Sandbox Code Playgroud)
由于$variable不能同时等于A和B,它将始终打印"TEST".
当然,以上是指你的最后两个条件if.
你的ors应该是ands.表达式a != 1 || a != 2总是正确的,因为无论a的值是什么,表达式中的一个或另一个都是真的,因此最终结果将为真.
要修复,请更改||为&&.
我猜你犯了这个错误,因为你开始使用这个表达式并想要反转它:
if ($planDetails['Company']['name'] == 'company1'
|| $planDetails['PlanDetail']['name'] == 'pd-name1'
|| $planDetails['PlanDetail']['name'] == 'pd-name2')
Run Code Online (Sandbox Code Playgroud)
反转此表达式的最简单方法如下:
if (!($planDetails['Company']['name'] == 'company1'
|| $planDetails['PlanDetail']['name'] == 'pd-name1'
|| $planDetails['PlanDetail']['name'] == 'pd-name2'))
Run Code Online (Sandbox Code Playgroud)
使用这种方法,你不需要在头脑中做任何复杂的布尔逻辑来看它是否有效 - 它只是对你已经知道的东西的简单否定.请注意,这是不一样的翻转==,以!=个别.有关详细信息,请参阅De Morgan定律.
请参阅De Morgan的法律.
NOT (P AND Q) = (NOT P) OR (NOT Q)
NOT (P OR Q) = (NOT P) AND (NOT Q)
Run Code Online (Sandbox Code Playgroud)
你有:
(NOT P) OR (NOT Q) OR (NOT R)
Run Code Online (Sandbox Code Playgroud)
这与以下相同:
NOT (P AND Q) OR (NOT R) =>
NOT (P AND Q AND R)
Run Code Online (Sandbox Code Playgroud)
因此,P,Q,R必须都是假的才能打印"TEST".如果其中一个是真的那么你就不会打印"TEST".
我相信你想:
NOT (P OR Q OR R)
Run Code Online (Sandbox Code Playgroud)
这将是:
(NOT P) AND (NOT Q) AND (NOT R)
Run Code Online (Sandbox Code Playgroud)
要么
if (!($planDetails['Company']['name'] == 'company1'
|| $planDetails['PlanDetail']['name'] == 'pd-name1'
|| $planDetails['PlanDetail']['name'] == 'pd-name2'))
{
echo "TEST";
}
Run Code Online (Sandbox Code Playgroud)
AKA
if ($planDetails['Company']['name'] != 'company1'
&& $planDetails['PlanDetail']['name'] != 'pd-name1'
&& $planDetails['PlanDetail']['name'] != 'pd-name2')
{
echo "TEST";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5060 次 |
| 最近记录: |