導入
ここまでの「変数・配列・連想配列・foreach・関数」を組み合わせると、もう小さなプログラムが作れます。買い物カゴの小計と合計を計算してみましょう。
説明
商品を「連想配列」で表し、それを並べた「配列」でカゴを作ります。foreach で1つずつ小計を出し、全体の合計をためていきます。
<?php
$cart = [
["name" => "ノート", "price" => 300, "qty" => 3],
["name" => "ペン", "price" => 120, "qty" => 5],
["name" => "消しゴム", "price" => 80, "qty" => 2],
];
$total = 0;
foreach ($cart as $item) {
$subtotal = $item["price"] * $item["qty"];
$total += $subtotal;
echo "{$item['name']}: {$subtotal}円\n";
}
echo "--------\n";
echo "合計: {$total}円\n";
「連想配列の配列」は、Web開発でデータベースから取り出した複数件のデータを表すときの定番の形です。1件を連想配列、その集まりを配列、と覚えておきましょう。
計算部分を関数に切り出せば、さらに整理できます。
<?php
function subtotal(array $item): int {
return $item["price"] * $item["qty"];
}
$item = ["name" => "ノート", "price" => 300, "qty" => 3];
echo subtotal($item), "円\n"; // 900円
やってみよう
$cart に商品を1つ足して、合計が正しく増えることを確かめましょう。qty(数量)や price(単価)を書き換えても試してみてください。
演習
上の $cart に、消費税10%を掛けた税込合計を最後の行に追加表示してください(合計 の下に 税込: ◯◯円)。
ヒント1を見る
ループの後、$total に 1.1 を掛けます。$taxed = $total * 1.1;
ヒント2を見る
echo "税込: {$taxed}円\n"; を最後に足します。