Menu
Coddy logo textTech

キーと値を使ったループ

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 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 オブジェクトを含む入力の1行を読み取ります(例: {"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) {
    // $key と $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: Write your code below
// プロダクトデータを反復するためにキー-値構文のforeachループを使用する
// 各キーおよび値を形式: [key] => [value] で印刷する

?>
quiz icon腕試し

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

基礎のすべてのレッスン