
やったこと
- 独学エンジニア レッスン4.23-24
- foreach文
- 前回、複数の読書ログを登録できるようにしたが、表示も複数できるようにした。
shinya-tech.com
学んだこと
配列・連想配列の全要素をループするときはforeachを使う。
foreach
- 配列の全要素それぞれに対して繰り返し処理を行う
- 配列・連想配列の全要素に繰り返し処理をしたいときに向いている
foreach ($配列名 as $要素名) {
// 繰り返したい処理
}
- 連想配列の各要素を
foreach
で繰り返し処理したいとき
foreach ($配列名 as $キー名 => $要素名) {
// 繰り返したい処理
}
foreachのサンプルコード
配列
$numbers = [1, 2, 3, 4, 5];
foreach ($numbers as $number) {
echo $number * 2 . PHP_EOL;
}
2
4
6
8
10
連想配列
$currencies = [
'japan' => 'yen',
'us' => 'dollar',
'england' => 'pound',
];
foreach ($currencies as $country => $currency) {
echo $country . ':' . $currency . PHP_EOL;
}
japan:yen
US:dollar
england:pound
今日書いたコード
<?php
$title = '';
$author = '';
$status = '';
$score = '';
$summary = '';
$reviews = [];
while (true) {
echo '1. 読書ログを登録' . PHP_EOL;
echo '2. 読書ログを表示' . PHP_EOL;
echo '9. アプリケーションを終了' . PHP_EOL;
echo '実行したい番号(1,2,9)を入力してください:';
$i = trim(fgets(STDIN));
if ($i === '1') {
echo '読書ログを登録してください' . PHP_EOL;
echo '書籍名:';
$title = trim(fgets(STDIN));
echo '著者名:';
$author = trim(fgets(STDIN));
echo '読書状況(未読、読んでいる、読了):';
$status = trim(fgets(STDIN));
echo '評価(5点満点の整数):';
$score = trim(fgets(STDIN));
echo '感想:';
$summary = trim(fgets(STDIN));
$reviews[] = [
'title' => $title,
'author' => $author,
'status' => $status,
'score' => $score,
'summary' => $summary,
];
echo '登録が完了しました' . PHP_EOL . PHP_EOL;
} elseif ($i === '2') {
echo '読書ログを表示します' . PHP_EOL;
foreach ($reviews as $review) {
echo '書籍名:' . $review['title'] . PHP_EOL;
echo '著者名:' . $review['author'] . PHP_EOL;
echo '読書状況:' . $review['status'] . PHP_EOL;
echo '評価:' . $review['score'] . PHP_EOL;
echo '感想:' . $review['summary'] . PHP_EOL;
echo '-----------------' . PHP_EOL;
}
} elseif ($i === '9') {
break;
}
}