キーと値を使ったループ
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キーと値の両方にアクセスできるため、ラベル付きデータを表示したり、キーに依存する操作を実行したりするのが簡単です。
チャレンジ
簡単キーや値を持つ製品を表す 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] で印刷する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators