Menu
Coddy logo textTech

Проверка существования ключа

Часть раздела Основы путешествия по PHP на Coddy. Урок 45 из 71.

При работе с ассоциативными массивами вам часто потребуется проверить, существует ли определённый ключ, прежде чем пытаться получить его значение. Попытка обратиться к несуществующему ключу может вызвать ошибки, поэтому PHP предоставляет функцию array_key_exists(), которая позволяет сначала безопасно выполнить проверку.

<?php
$person = [
    "name" => "Alice",
    "age" => 25
];

if (array_key_exists("name", $person)) {
    echo "Name exists!";
}

if (array_key_exists("city", $person)) {
    echo "City exists!";
} else {
    echo "City not found";
}
?>

Функция принимает два аргумента: искомый ключ и массив, в котором выполняется поиск. Она возвращает true, если ключ существует, и false в противном случае. Это делает её идеальной для использования в условных операторах.

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

challenge icon

Задание

Легко

Прочитайте строку ввода, содержащую объект JSON, представляющий данные user (например, {"username": "john_doe", "email": "john@example.com", "age": 28}).

Затем прочитайте ещё два входных значения:

  • Строку key1 — первый ключ для проверки
  • Строку key2 — второй ключ для проверки

Создайте ассоциативный массив из входных данных JSON, затем:

  1. Проверьте, существует ли key1 в массиве. Если существует, выведите связанное с ним значение. Если нет, выведите Key not found.
  2. Проверьте, существует ли key2 в массиве. Если существует, выведите связанное с ним значение. Если нет, выведите Key not found.

Выведите каждый результат в отдельной строке.

Пример:

Если входными данными являются {"username": "john_doe", "email": "john@example.com", "age": 28}, username и phone, результатом должен быть:

john_doe
Key not found

Если входными данными являются {"title": "Manager", "department": "Sales"}, salary и department, результатом должен быть:

Key not found
Sales

Попробуйте сами

<?php
// Прочитать входные данные JSON
$jsonInput = trim(fgets(STDIN));
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// Преобразовать JSON в ассоциативный массив
$userData = (array)json_decode($jsonInput, true);

// TODO: Напишите ваш код ниже
// Проверить, существует ли key1, и вывести значение или точный текст из инструкций

// Проверить, существует ли key2, и вывести значение или точный текст из инструкций

?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор PHP