Menu
Coddy logo textTech

Доступ к значениям по ключу

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

Теперь, когда вы понимаете, что такое associative arrays, давайте узнаем, как извлекать из них значения. Подобно тому как индексированные array используют числовые позиции, associative arrays используют keys внутри квадратных скобок.

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

echo $person["name"]; // Alice
echo $person["age"];  // 25
?>

Синтаксис выглядит так: $array["key"]: поместите ключ в виде строки внутри скобок, и PHP вернёт associated значение. Это гораздо понятнее, чем запоминать, что имя находится по индексу 0.

Вы также можете сохранить полученное значение в переменной для последующего использования:

<?php
$product = [
    "title" => "Laptop",
    "price" => 999
];

$itemName = $product["title"];
echo $itemName; // Laptop
?>

Ключ должен в точности совпадать, включая регистр. Использование "Name" вместо "name" вызовет ошибку, поскольку PHP рассматривает их как разные ключи.

Иногда данные поступают в виде строки JSON, а не литерала массива PHP. JSON (JavaScript Object Notation) — это распространённый текстовый формат для представления структурированных данных. Например:

$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

Встроенная функция PHP json_decode() преобразует строку JSON в значение PHP. Чтобы получить ассоциативный массив, передайте true в качестве второго аргумента:

<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

$book = json_decode($json, true);

echo $book["title"];  // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"];   // 1965
?>

После вызова json_decode($json, true) результатом является обычный ассоциативный массив, и вы можете обращаться к его значениям точно так же, как и к значениям любого другого ассоциативного массива: используя $array["key"].

challenge icon

Задание

Легко

Прочитайте строку входных данных, содержащую JSON-объект с информацией о книге (например, {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).

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

  • Строку key1, представляющую первый ключ для доступа
  • Строку key2, представляющую второй ключ для доступа

Чтобы преобразовать строку JSON в ассоциативный массив, используйте встроенную функцию json_decode() с аргументом true в качестве второго аргумента:
$array = json_decode($jsonString, true);
Второй аргумент true сообщает PHP, что нужно вернуть ассоциативный массив, а не объект. После декодирования можно обращаться к значениям по ключу так же, как в любом ассоциативном массиве, например: $array["title"].

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

  1. Получите и выведите значение, связанное с key1
  2. Сохраните значение, связанное с key2, в переменной с именем $info
  3. Выведите значение, сохранённое в $info

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

Пример:

Если входными данными являются {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title и author, результат должен быть следующим:

The Great Gatsby
F. Scott Fitzgerald

Если входными данными являются {"name": "Laptop", "brand": "TechCo", "price": 999}, brand и price, результат должен быть следующим:

TechCo
999

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

<?php
// Прочитать JSON-ввод
$jsonInput = trim(fgets(STDIN));

// Прочитать два ключа
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: Напишите свой код ниже
// 1. Создайте ассоциативный массив из JSON-ввода с помощью json_decode
// 2. Получите и выведите значение, связанное с $key1
// 3. Сохраните значение, связанное с $key2, в переменную с именем $info
// 4. Выведите значение, хранящееся в $info

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

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

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

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