【PHP講座】配列と繰り返し処理(ループ処理)について
PHPで
このforeach ($list as $value) をforeach ($list as $key => $value)、break、continue をfor や while はarray_map はimplode は
PHPは
このforeachやforなどの
この
PHPを
配列とループ処理
最初に
配列と
この
配列の定義
PHPで
Visual Studio Code

サンプルコード
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo $list[0];
echo $list[1];
echo $list[2];
echo $list[3];画面表示
実際に

改行をつけて表示
先ほどの
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo $list[0] . '<br>';
echo $list[1] . '<br>';
echo $list[2] . '<br>';
echo $list[3] . '<br>';
?>このように

ループ処理
PHPで
1. forループを
2. whileループを
3. do...whileループを
4. array_map関数を
5. implode関数を
Visual Studio Code(for文)

サンプルコード(for文)
<?php
$list = ['php', 'sample', 'test', 'loop'];
for ($i = 0; $i < count($list); $i++) {
echo $list[$i] . '<br>';
}Visual Studio Code(while文)

サンプルコード(while文)
<?php
$list = ['php', 'sample', 'test', 'loop'];
$i = 0;
while ($i < count($list)) {
echo $list[$i] . '<br>';
$i++;
}Visual Studio Code(do…while文)

サンプルコード(do…while文)
<?php
$list = ['php', 'sample', 'test', 'loop'];
$i = 0;
do {
echo $list[$i] . '<br>';
$i++;
} while ($i < count($list));Visual Studio Code(array_map関数)

サンプルコード(array_map関数)
<?php
$list = ['php', 'sample', 'test', 'loop'];
array_map(function($item) {
echo $item . '<br>';
}, $list);Visual Studio Code(implode関数)

サンプルコード(implode関数)
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo implode('<br>', $list) . '<br>';画面表示
実際に

foreachで配列をループする(いちばん使う書き方)
実際のfor よりも foreach を
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $value) {
echo $value . '<br>';
}番号$key => $value の
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $key => $value) {
echo $key . ':' . $value . '<br>';
}
// 0:php
// 1:sample
// 2:test
// 3:loop書き方はPHPマニュアル:foreachの
連想配列(キーと値の組み合わせ)をループする
画面にforeach で
<?php
$user = ['name' => '山田', 'age' => 28, 'city' => '大阪'];
foreach ($user as $key => $value) {
echo $key . ':' . $value . '<br>';
}
// name:山田
// age:28
// city:大阪データベースから
<?php
$users = [
['name' => '山田', 'age' => 28],
['name' => '佐藤', 'age' => 34],
];
foreach ($users as $user) {
echo $user['name'] . '(' . $user['age'] . '歳)<br>';
}ループを途中で止める・飛ばす(break と continue)
break:ループをそこで 終わらせる continue:その回の 残りを 飛ばして、 次の 要素に 進む
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $value) {
if ($value === 'sample') {
continue; // sample だけ飛ばす
}
if ($value === 'loop') {
break; // loop に来たら終わり
}
echo $value . '<br>';
}
// php
// testループの中で配列の値を書き換えるとき
foreach の中で $value を&$value(参照)をunset($value) します。
<?php
$prices = [100, 200, 300];
foreach ($prices as &$price) {
$price = $price * 2;
}
unset($price); // 参照を切る
// $prices は [200, 400, 600]array_mapは「加工した新しい配列」を作る関数
上のarray_map の中で echo していましたが、
<?php
$list = ['php', 'sample', 'test', 'loop'];
$upper = array_map(fn($item) => strtoupper($item), $list);
echo implode('<br>', $upper);
// PHP
// SAMPLE
// TEST
// LOOPfn($item) => ... は
どのループを使えばよいか
| やりたい |
向いている |
|---|---|
| 配列の |
foreach |
| キーと |
foreach ($list as $key => $value) |
| 決まった |
for |
| 条件を |
while |
| 各要素を |
array_map |
| 配列を |
implode |
迷ったら foreach から
株式会社bundlyzeでは、
よくある質問
PHPの配列ループはforとforeachのどちらを使えばいい?
配列のforeach がcount() で
ループの途中で抜けるには?
break をcontinue です。
配列の中身を1行で表示するには?
implode('区切り文字', $配列) でecho します。print_r($list) や var_dump($list) も