Ваши ors должны быть ands.Выражение a != 1 || a != 2
всегда истинно, потому что независимо от значения a одно или другое выражение будет истинным, поэтому конечный результат будет истинным.
Чтобы исправить, измените ||
на &&
.
Полагаю, вы допустили эту ошибку, потому что начали с этого выражения и хотели его инвертировать:
if ($planDetails['Company']['name'] == 'company1'
|| $planDetails['PlanDetail']['name'] == 'pd-name1'
|| $planDetails['PlanDetail']['name'] == 'pd-name2')
Самый простой способ инвертировать это выражение:
if (!($planDetails['Company']['name'] == 'company1'
|| $planDetails['PlanDetail']['name'] == 'pd-name1'
|| $planDetails['PlanDetail']['name'] == 'pd-name2'))
Используя этот метод, вам не нужно выполнять какую-либо сложную логическую логику в своей голове, чтобы убедиться, что она работает - это просто простое отрицание того, что вы уже знаете.Обратите внимание, что не - это то же самое, что инвертировать ==
в !=
по отдельности.См. Законы Де Моргана для получения более подробной информации.