Когда я запускаю простой оператор if, а ключ не установлен, он терпит неудачу, я хочу знать, как лучше всего проверить, установлен ли ключ и больше 5. Это то, что у меня есть сейчас:
if (isset($a['key']) {
if ($a['key'] > 5) {
foo;
}
}
Я знаю, что есть более красивый способ сделать это.
Простая проверка более 5 приводит к ошибке, если не установлено.
if ($a['key'] > 5) {
foo;
}
if (isset($a['key']) && $a['key'] > 5) проверяет $a['key'] сначала и ошибки.
Так лучше 🙂 Так что да, if (isset($a['key'] && $a['key'] > 5) или if ($a['key'] ?? 0 > 5) и т.д.
Сначала проверяет isset() и не выдает ошибку: 3v4l.org/BMd4V
Только что перепроверил, ты прав. Спасибо!






Начиная с PHP7.1
if ($a['key'] ?? 0 > 5) {
// $a['key'] is set and also greater than 5
}
Это интересный синтаксис. У вас есть источник, где я могу прочитать дальше о том, как это работает?
Конечно, и мне кажется, что это начиная с 7.0 note 7.1 php.net/manual/en/migration70.new-features.php «Оператор объединения null (??) был добавлен в качестве синтаксического сахара для общего случая необходимости использовать троицу в сочетании с isset(). Он возвращает свой первый операнд, если он существует и не равен нулю, в противном случае он возвращает свой второй операнд». если левая сторона ?? не установлен или нулевой, то используется правая сторона
Что такое
key? Это константа, которую вы где-то определили? Этот код может привести к ошибке, если вы не имели в виду$a[$key]или$a['key']и т. д. Но вы можете сделатьif (isset($a['key']) && $a['key'] > 5) { ... }