PHP это один набор значений, а не другой - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю над правдой / ложью, где мне нужно проверить 2 значения, одно из которых может быть нулевым, а другое 0. Если целое и строковое значение одинаковые, они будут одинаковыми.Самое простое, что мне удалось разобрать:

if($var1 == $var2) {// They may be the same
  if((isset($var1) && !isset($var2)) || (!isset($var1) && isset($var2))) { // Is one set, and not the other?
     return true; // As different as we'll allow
  }
  return false;   // Nope they're the same
}
return true;      // Definitely different

Мой вопрос будет в основном, учитывая приведенный выше блок кода, есть ли более простой способ проверить, установлено ли одно значение, а неДругой?

РЕДАКТИРОВАТЬ: Причина, по которой я сначала проверяю на равенство, заключается в том, что значение может пройти 1 == 10 или 10 == '10', в этом случае мне не нужно проверять дальше, ноесли ноль == 0, это пройдет и потребует дальнейшей проверки.Я видел, что могу передать несколько значений в isset, что сработало бы, если бы мне нужно было установить оба или оба не заданы, но если одно есть, а не другое, вот где мне нужно пометить.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Использование оператора объединения нулей может пригодиться ...

return ($var1 ?? null) !== ($var2 ?? null);

Проверяет, что они не равны, и хотя бы один из них определен и не равен нулю.

0 голосов
/ 03 декабря 2018

Вы проверяете равенство перед проверкой, установлены ли они.

Я бы рекомендовал проверить, установлены ли они первыми.

Если целью PURE являетсяпроверьте, установлен ли один, а не другой, тогда:

return ( ( empty($var1) && ! empty($var2) ) || ( ! empty($var1) && empty($var2) );

Для комментариев, isset является требованием, поэтому эта версия:

return ( ( isset($var1) && ! isset($var2) ) || ( ! isset($var1) && isset($var2) );

И, подпирает @decezeпредложить еще более простую версию:

return ( isset($var1) != isset($var2) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...