Menu
Coddy logo textTech

キーと値を使ったループ処理

CoddyのPHPジャーニー「基礎」セクションの一部。レッスン 50/71。

前のレッスンでは、foreachを使うとarray内の各値にアクセスできることを学びました。しかし、keyも必要な場合はどうすればよいでしょうか?これは、associative arrayを扱うときに特に便利です。

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 オブジェクトを含む 1 行の input を読み取ります(例: {"name":"Laptop","price":"999","stock":"25"})。

foreach loop と key-value syntax を使用して、product data を iterate します。各 key とそれに対応する value を次の format で Print します。

[key] => [value]

各 key-value ペアを別々の行に Print します。

例 1:

input が {"name":"Laptop","price":"999","stock":"25"} の場合、output は次のようになります。

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

例 2:

input が {"title":"PHP Basics","author":"John","pages":"350"} の場合、output は次のようになります。

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

例 3:

input が {"city":"Paris","country":"France"} の場合、output は次のようになります。

city => Paris
country => France

自分で試してみよう

<?php
// JSON入力を読み取る
$input = trim(fgets(STDIN));

// JSONを連想配列に変換する
$product = (array)json_decode($input, true);

// TODO: 以下にコードを書いてください
// キーと値の構文を使ったforeachループで商品データを反復処理する
// 各キーと値を次の形式で出力する: [key] => [value]

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ