PHP XOR - как использовать с if ()? - PullRequest
2 голосов
/ 26 февраля 2012

Мне было интересно, если бы вместо

function edit_save($data, $post_id, $post_type)
{
    if (($post_type == 'A') OR ($post_type == 'B')) {

            // do this

    }

я мог бы использовать XOR, как показано ниже, - но это не работает ...

function edit_save($data, $post_id, $post_type)
{
    if ($post_type == 'A' XOR 'B') { // pseudo code

            // do this

    }

Есть предложения, как упростить общеесинтаксис и представить 2 возможных варианта для переменной в условном выражении?

Ответы [ 3 ]

5 голосов
/ 26 февраля 2012

Попробуйте:

function edit_save($data, $post_id, $post_type)
{
    if (($post_type == 'A') XOR ($post_type == 'B')) {

            // do this

    }

Второе утверждение ('B') в вашем коде всегда будет возвращать true. Вам нужен полный условный оператор, чтобы он работал.

2 голосов
/ 26 февраля 2012

Похоже, что вы действительно хотите это:

if (in_array($post_type,array('A','B'))) { 
   ...
}

Что в PHP 5.4+ будет выглядеть еще лучше:

if (in_array($post_type,['A','B'])) { 
   ...
}
2 голосов
/ 26 февраля 2012

Хм?

function edit_save($data, $post_id, $post_type)
{
    if (($post_type == 'A') XOR ($post_type == 'B')) {

            // do this

    }
...