Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

phpでfor文とif文を用いて効率的なプログラムにしたい。

Q&A

Closed

解決したいこと

for文とif文を用いて効率的なプログラムにしたい。
phpをつかって学習しております。
下記のindex.phpとsubmit.phpような設定で、checkboxが増えた際に、if文を追加するのは非常に効率が悪いと思います。
for文をうまく使ってcheckboxのチェック個数に応じた出力にしたいです。

最終的な出力結果は、以下のようにしたく考えております。
単数の場合:「今日のご飯は肉」
複数の場合:「今日のご飯は肉と魚」 や 「今日のご飯は肉と魚と大豆」

どのようにプログラムを組めば良いのかご教示頂けますと助かります。
よろしくお願い致します。

index.php

<form action="submit.php" method="post">
        <input type="checkbox" name="check[]" value="肉">肉
        <input type="checkbox" name="check[]" value="魚">魚
        <input type="checkbox" name="check[]" value="大豆">大豆

        <input type="submit" value="送信">

    </form>

submit.php

<?php

$check = $_POST["check"];
$count = count($check);


    if($count === 1){

        echo('今日のご飯は');
        print($check[0]);

    }elseif($count === 2){

        echo('今日のご飯は');
        print($check[0]);
        echo('と');
        print($check[1]);

    }elseif($count === 3){

        echo('今日のご飯は');
        print($check[0]);
        echo('と');
        print($check[1]);
        echo('と');
        print($check[2]);

    }


?>

0

2Answer

Comments

  1. @m1527092

    Questioner

    お二方ともご教示頂きありがとうございました。
    forを使い、基本的なアルゴリズム確認できました。
    また、joinメソッドも使うことができ、よりシンプルに実装できるとは、衝撃でした!
    本当にありがとうございました。

for を使うとこんな感じでしょうか。

<?php

$check = $_POST["check"];
$count = count($check);

echo('今日のご飯は');
for($i = 0; $i < $count; $i++){
    if($i > 0) {
        echo('と');
    }
    print($check[$i]);
}
?>
0Like

Your answer might help someone💌