Как PHP может проверить isset() и больше 5?

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

if (isset($a['key']) {
    if ($a['key'] > 5) {
        foo;
    }
}

Я знаю, что есть более красивый способ сделать это.

Простая проверка более 5 приводит к ошибке, если не установлено.

if ($a['key'] > 5) {
    foo;
}

Что такое key? Это константа, которую вы где-то определили? Этот код может привести к ошибке, если вы не имели в виду $a[$key] или $a['key'] и т. д. Но вы можете сделать if (isset($a['key']) && $a['key'] > 5) { ... }

Tim Lewis 19.04.2023 18:23
if (isset($a['key']) && $a['key'] > 5) проверяет $a['key'] сначала и ошибки.
Meechew 19.04.2023 18:26

Так лучше 🙂 Так что да, if (isset($a['key'] && $a['key'] > 5) или if ($a['key'] ?? 0 > 5) и т.д.

Tim Lewis 19.04.2023 18:27

Сначала проверяет isset() и не выдает ошибку: 3v4l.org/BMd4V

Tim Lewis 19.04.2023 18:32

Только что перепроверил, ты прав. Спасибо!

Meechew 19.04.2023 18:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Начиная с PHP7.1

 if ($a['key'] ?? 0 > 5) {
     //  $a['key'] is set and also greater than 5
 }

Это интересный синтаксис. У вас есть источник, где я могу прочитать дальше о том, как это работает?

Meechew 24.04.2023 18:50

Конечно, и мне кажется, что это начиная с 7.0 note 7.1 php.net/manual/en/migration70.new-features.php «Оператор объединения null (??) был добавлен в качестве синтаксического сахара для общего случая необходимости использовать троицу в сочетании с isset(). Он возвращает свой первый операнд, если он существует и не равен нулю, в противном случае он возвращает свой второй операнд». если левая сторона ?? не установлен или нулевой, то используется правая сторона

Gectou4 25.04.2023 21:32

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