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) — это распространённый текстовый формат для представления структурированных данных. Встроенная функция PHP json_decode() преобразует строку JSON в значение PHP. Когда вы передаёте true в качестве второго аргумента, она возвращает ассоциативный массив вместо объекта, чтобы вы могли обращаться к значениям с помощью знакомого синтаксиса $array["key"].

<?php
$json = '{"name": "Alice", "age": 25}';

$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25
?>
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

Шпаргалка

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

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

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

Синтаксис: $array["key"]. Ключи чувствительны к регистру.

Вы можете сохранить полученные значения в переменные:

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

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

Используйте json_decode($jsonString, true) для преобразования JSON-строки в ассоциативный массив. Второй аргумент true указывает PHP возвращать массив вместо объекта:

$json = '{"name":"Alice","age":25}';
$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25

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

<?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Проверьте себя

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

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