本文へスキップ
BecomeCoder

PHPコース · 第5章 文字列・実践・Webへ · レッスン17

ミニ実践 ― 買い物カゴの合計

ブラウザで完結

導入

ここまでの「変数配列・連想配列・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を見る

ループの後、$total1.1 を掛けます。$taxed = $total * 1.1;

ヒント2を見る

echo "税込: {$taxed}円\n"; を最後に足します。

実際に動かしてみよう

下のエディタにPHPを書いて「実行」を押すと、ブラウザ内で動く本物のPHP(php-wasm)で出力が表示されます。コードは必ず <?php で書き始めます。本文の例をそのまま試したり、書き換えたりしてみましょう(初回だけPHPの読み込みに少し時間がかかります)。

PHP — ブラウザ内で実行

ブラウザ内で動く本物のPHP(php-wasm / PHP 8.4)を読み込みます(初回のみ読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。