PHP7.4.1におけるfor文について。
<?php
//①for文を使わない連想配列の繰り返し処理
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
echo "$aaa[a]\n"; //あいうえお
echo "$aaa[ka]\n"; //かきくけこ
echo "$aaa[sa]\n"; //さしすせそ
echo "$aaa[ta]\n"; //たちつてと
//②①をforeach文で作った場合
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
foreach ($aaa as $bbb) { //$aaaから値を先頭から1つずつ取り出して$bbbに代入する
echo $bbb. "・"; //あいうえお・かきくけこ・さしすせそ・たちつてと・
}
//③②のforeach文からさらにキーワードも取り出すパターン
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
foreach ($aaa as $bbb => $ccc) { //$aaaのキーワードを$bbbに、値を$cccに代入する
echo "\n". $bbb. ":". $ccc; //a:あいうえお ka:かきくけこ…
}
//①for文を使わない連想配列の繰り返し処理
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
echo "$aaa[a]\n"; //あいうえお
echo "$aaa[ka]\n"; //かきくけこ
echo "$aaa[sa]\n"; //さしすせそ
echo "$aaa[ta]\n"; //たちつてと
//②①をforeach文で作った場合
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
foreach ($aaa as $bbb) { //$aaaから値を先頭から1つずつ取り出して$bbbに代入する
echo $bbb. "・"; //あいうえお・かきくけこ・さしすせそ・たちつてと・
}
//③②のforeach文からさらにキーワードも取り出すパターン
$aaa = [
'a' => 'あいうえお',
'ka' => 'かきくけこ',
'sa' => 'さしすせそ',
'ta' => 'たちつてと'
];
foreach ($aaa as $bbb => $ccc) { //$aaaのキーワードを$bbbに、値を$cccに代入する
echo "\n". $bbb. ":". $ccc; //a:あいうえお ka:かきくけこ…
}
foreach文は、配列を繰り返し処理するための便利な方法です。
上記プログラムのような連想配列では、インデックスが存在しないのでfor文で繰り返しの処理をおこなうことは困難です。
そのような場合にforeach文は役に立ちます。
上記②のプログラムは、$aaaの連想配列の先頭から値を抜き出して$bbbに順次代入していきます。
foreach文にはfor文のような更新処理は必要ありません。
先頭から値を順次抜き出して、末尾の値を取り出したらそこで勝手にプログラムは終了されます。
③のプログラムは、foreach文のもうひとつのパターンです。
条件式に「$aaa as $bbb => $ccc」と記述することで、$aaaのキーワードを$bbbに格納し、そのキーワードに紐づいた値を$cccに格納します。
foueach文の定形は以下のとおりです。
foreach ($〇〇 as $△△ => $◇◇) {
条件を満たした際の処理;
}
なお、foreach文であつかえるのはArray型の値とオブジェクトだけです。
str型などの他のデータ型を条件式に指定すると、PHPはWarningまたはerrorを吐いてしまいます。
以上です。