配列を扱う場合、for文やforeach文などの繰り返し処理を使うことが多いです。
繰り返し処理を使うことで、各要素それぞれに対して処理を実行できます。
配列 と for文
以下は、配列にある価格情報それぞれに10%の税金を乗せた金額を計算するものです。
tax.php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $prices = [100, 200, 300]; // 税抜きの価格 $taxRate = 1.1; // 税率10% $pricesWithTax = []; // 税込み価格を保存する配列 for ($i = 0; $i < count($prices); $i++) { // 税込み価格を計算 $withTax = $prices[$i] * $taxRate; // 計算結果を新しい配列へ $pricesWithTax[$i] = $withTax; echo "商品{$i} の税込価格:{$withTax} 円\n"; } |
|
1 2 3 4 |
$ php tax.php 商品0 の税込価格:110 円 商品1 の税込価格:220 円 商品2 の税込価格:330 円 |
連想配列 と foreach文
PHPのforeach文は、配列の要素を先頭から順番に取り出して処理できる構文で、必要に応じてキーと値の両方を扱える便利なループです。
書式は以下のようになります。
値だけ取り出す場合
|
1 2 3 |
foreach (配列 as 値変数) { 処理; } |
キーと値を取り出す場合
|
1 2 3 |
foreach (配列 as キー変数 => 値変数) { 処理; } |
以下でサンプルを見ていきます。
値だけ取り出す場合のサンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$numbers = [3, 7, 2, 8, 5, 10]; $sumEven = 0; $evenNumbers = []; foreach ($numbers as $num) { if ($num % 2 === 0) { // 偶数だけ処理 $evenNumbers[] = $num; // 別の配列に追加 $sumEven += $num; // 合計に加算 } } echo "偶数の合計: $sumEven\n"; echo "偶数のリスト: "; print_r($evenNumbers); |
- 左側の$numbersが配列で、要素の数だけforeachブロックの内容を実行し、「foreach($numbers as $num)」となっているので、$numに値が入ってきます
- 2で割った余りが0かどうかで偶奇判別をしています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ php value.php 偶数の合計: 20 偶数のリスト: Array ( [0] => 2 [1] => 8 [2] => 10 ) <?pre> <h4>キーと値を取り出す場合のサンプル</h4> <pre> <?php // 商品名 ⇒ 在庫数 の連想配列 $stock = [ "apple" => 3, "banana" => 0, "orange" => 5, "melon" => 1 ]; foreach ($stock as $name => $num) { // 在庫があるかどうか判定 if ($num > 0) { echo "{$name} は在庫が {$num} 個あります。\n"; } else { echo "{$name} は在庫切れです。\n"; } } |
- 「foreach ($stock as $name => $num) 」となっているので、$nameにキーが入ってきます
- 値が0より大きいかどうかで出力形式を変更しています。
|
1 2 3 4 5 |
$ php zaiko.php apple は在庫が 3 個あります。 banana は在庫切れです。 orange は在庫が 5 個あります。 melon は在庫が 1 個あります。 |

コメント