Menu
Coddy logo textTech

Accessing Values by Key

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

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

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

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

Синтаксис следующий: $array["key"] — поместите ключ в виде строки внутри скобок, и PHP вернет соответствующее значение. Это гораздо более читабельно, чем помнить, что имя находится под индексом 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Проверьте себя

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

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