PHP объединяет логические операторы в предложении IF - PullRequest
2 голосов
/ 13 января 2020

Как мне успешно создать следующее предложение IF псевдокода в php?

if $a is NOT equal to $b
OR
if $a is NOT both a string AND equal to $c or $d
continue

Чтобы уточнить условия

  • , если $ a равно $ b, это не continue
  • если $ a НЕ равен $ b, он проверяет следующее условие
    • , если $ a равно $ c или $ d, но не является строкой, он продолжает
    • если $ a НЕ равно $ c или $ d, даже если это строка, оно продолжается
    • , если $ a равно $ c или $ d AND является строкой, оно НЕ продолжается

Это мои попытки, но я считаю, что неправильно отрицаю второе предложение

if ( ($a != $b) OR !(in_array($a, array($c, $d)) AND is_string($a) ) ) {      
  ...
}

и

if ( ($a != $b) OR (!is_string($a) AND in_array($a, array($c, $d)) ) ) {      
  ...
}

Спасибо

1 Ответ

0 голосов
/ 13 января 2020

if ( ($a !== "B") || ( !in_array($a, array("C", "D") && is_string($a) ) ) ) {

    ...

}

правильно, - вы делаете хорошо.

также, вы не уточняете, должно ли оно быть равным к типу 'B' или нет:

, если $ a НЕ равно 'B'

, так что это может быть if ( ($a !== "B") ||, а также if ( ($a != "B") ||

!== означает not equal to и not equal to its type,

, когда === означает оба equal to и equal to its type.

К @Kerkouch с уважением,

Как $ a будет равно 'C' или 'D', если это не строка?

  • конечно, говоря на php не может; тем не менее, если бы мы могли абстрагироваться, это может зависеть от языка, даже если такого языка еще не существует)
...