キーと値を使ったループ処理
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キーと値の両方にアクセスできるため、ラベル付きデータを表示したり、キーに依存する操作を実行したりすることが簡単になります。
チャレンジ
簡単キーと値を持つ製品を表す 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]
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ