PHP 5 логин "синтаксическая ошибка, неожиданная '?' "во время использования?? оператор

Этот код является частью формы входа в систему, и я хочу убедиться, что поле не пустое. Когда я использую эту строку кода, я получаю следующую ошибку:

syntax error, unexpected '?'

 if(is_blank($admin['username'])) {
      $errors[] = "Username cannot be blank.";
    } elseif (!has_length($admin['username'], array('min' => 8, 'max' => 255))) {
      $errors[] = "Username must be between 8 and 255 characters.";
    } elseif (!has_unique_username($admin['username'], $admin['id'] ?? 0)) {
      $errors[] = "Username not allowed. Try another.";
    }

Я знаю, что получаю ошибку, потому что я работаю с PHP 5.5.

Спасибо!

1 ответ

Да, вам нужно использовать следующее утверждение:

 (isset($admin['id']) ? $admin['id'] : 0 )

Поскольку PHP 5.5 не имеет ??null coalesce operator (PHP 7 и выше) вам нужно сделать старомодную короткую руку.

Пожалуйста, помните, что я поместил его в квадратные скобки, чтобы он не потерпел неудачу, если он находится внутри операторов if или else, и / или функций.

Вы также можете использовать

$admin['id'] ?: 0;

Но это даст уведомление, когда $admin['id'] не установлен

Другие вопросы по тегам