PHP: Что означает это утверждение? if ($ isCopy = null! == $ id) {// сделать что-то} - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующий унаследованный фрагмент кода в моем php-файле:

$id = $request->getParameter('id', null);
if ($isCopy = null !== $id) {
     // Do domething
}

Я обязуюсь выбрать параметр id из URL и проверить, имеет ли он значение NULL. Я хочу понять, как работает эта логика? if ($isCopy = null !== $id)

Ответы [ 3 ]

2 голосов
/ 04 октября 2019

Это интерпретируется следующим образом:

$id = $request->getParameter('id', null);
if ($isCopy = (null !== $id)) {
     // Do domething
}

$ isCopy получает логический результат из сравнения null! == $ id, затем его значение используется оператором if.

Такого рода конструкции следует избегать. Используйте это вместо:

$id = $request->getParameter('id', null);
if ($id !== null) {
     // Do domething
}

Или, если вы переносите оценку в другой блок кода и хотите выделить значение пустого идентификатора:

$id = $request->getParameter('id', null);
$isCopy = $id !== null;
if ($isCopy) {
     // Do domething
}
0 голосов
/ 04 октября 2019

В операторе

if ($isCopy = null !== $id) {

PHP будет оценивать операторы в соответствии с правилами вычисления. Операторы сравнения (такие как !==) оцениваются до =.

Итак, null !== $id оценивается первым. ноль сравнивается с id. Обратите внимание, что это не тождественный оператор сравнения !==, поэтому он будет оценивать true (если id не равно null по значению и типу) или false (id не равно null по значению и типу).

Наконец, операция присваивания $isCopy присваивается результату сравнения. Это будет либо true, либо false.

$isCopy будет true, если $id не является нулевым типом, и поэтому оператор if будет обрабатываться, только если id не является нулевым типом.

Обратите внимание, что $id может иметь здесь ложное значение, но не может иметь нулевой тип.

Хотя это не требуется логически для PHP, предпочтительно использовать приоритет в скобках. Скобки имеют самый высокий приоритет оператора. Это делает код более понятным и может помочь устранить ошибки, когда программист не уверен в порядке вычисления оператора.

if ($isCopy = (null !== $id)) {
0 голосов
/ 04 октября 2019

Он проверяет, является ли $id ненулевым или нет, чем присваивает результат переменной $isCopy, которая является истинной или ложной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...