Menu
Coddy logo textTech

Перебор ключей и значений

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

В предыдущем уроке вы узнали, как foreach предоставляет доступ к каждому значению в массиве. Но что, если вам также нужен ключ? Это особенно полезно при работе с ассоциативными массивами.

Цикл foreach имеет расширенный синтаксис, который предоставляет как ключ, так и значение на каждой итерации:

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

foreach ($person as $key => $value) {
    echo "$key: $value\n";
}
?>

Это выводит:

name: Alice
age: 25
city: Paris

Синтаксис foreach ($array as $key => $value) присваивает текущий ключ переменной $key и соответствующее значение переменной $value. Вы можете назвать эти переменные как угодно — главное, чтобы они были описательными.

Это также работает с индексированными массивами, где ключи являются числовыми индексами:

<?php
$colors = ["red", "green", "blue"];

foreach ($colors as $index => $color) {
    echo "$index: $color\n";
}
?>

Это выводит:

0: red
1: green
2: blue

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

challenge icon

Задание

Легко

Прочитайте одну строку ввода, содержащую JSON-объект, представляющий продукт с ключами и значениями (например, {"name":"Laptop","price":"999","stock":"25"}).

Используйте цикл foreach с синтаксисом ключ-значение для перебора данных продукта. Выводите каждый ключ и соответствующее ему значение в формате:

[key] => [value]

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

Пример 1:

Если ввод {"name":"Laptop","price":"999","stock":"25"}, то вывод должен быть:

name => Laptop
price => 999
stock => 25

Пример 2:

Если ввод {"title":"PHP Basics","author":"John","pages":"350"}, то вывод должен быть:

title => PHP Basics
author => John
pages => 350

Пример 3:

Если ввод {"city":"Paris","country":"France"}, то вывод должен быть:

city => Paris
country => France

Шпаргалка

Цикл foreach может предоставлять как ключ, так и значение на каждой итерации с использованием расширенного синтаксиса:

foreach ($array as $key => $value) {
    // use $key and $value
}

Пример с ассоциативным массивом:

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

foreach ($person as $key => $value) {
    echo "$key: $value\n";
}

Вывод:

name: Alice
age: 25
city: Paris

Этот синтаксис также работает с индексированными массивами, где ключи являются числовыми индексами:

$colors = ["red", "green", "blue"];

foreach ($colors as $index => $color) {
    echo "$index: $color\n";
}

Вывод:

0: red
1: green
2: blue

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

<?php
// Считываем JSON-входные данные
$input = trim(fgets(STDIN));

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

// TODO: Напишите свой код ниже
// Используйте цикл foreach с синтаксисом ключ-значение для итерации по данным продукта
// Выводите каждый ключ и значение в формате: [key] => [value]

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

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

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