-2

Web フォームの選択入力で使用する単純な PHP 配列を作成しました (選択入力は、以前は HTML でハードコーディングされていました)。配列は次のとおりです。

$fruits = array( 
                    'fruit' => 'apple',
                    'fruit' => 'orange',
                    'vegetable' => 'potato'
        );

ここにselect入力があります:

<label for="Food">Select the Food</label><br>



                <select id="Subdiscipline" name="Subdiscipline">
                        <option value="*">- No Selection - </option>
                        <?php 
                            $output = "";
                            $selected = false;

                        foreach($fruits as $fruit => $value) {

                             $fruit = htmlspecialchars($fruit);

                             $output .= "<option value=\"$fruit\"";

                              if ($fruit == $previousFruitSelection) {
                                  $selected = true;
                                  $output .= " selected";
                              }
                              $output .= ">$value</option>";

                        }
                        echo $output;

                            ?>
                    </select>

選択メニューのオプションをハードコーディングしなくなった今の問題は、おそらく配列に重複したキーを含めることができないため、「apple」のオプションが表示されなくなったことです。これを回避する方法はありますか PHP を使用して、選択オプションを駆動するために使用される配列を作成しますが、同じ 'value=fruit' を持つ複数のオプションを許可しますか?

4

2 に答える 2

1

PHP 配列は単純な連想配列です。キーと値が一致するため、キーのポイントは一意であり、配列内の特定の要素を識別できるため、配列に2つの果物を含めることはできません。

ただし、これを解決する方法は複数あります。頭に浮かぶ最も簡単な方法は、「キー」用と「値用」の 2 つの配列を作成することです。したがって、最初の配列は果物、果物、野菜になり、2 つ目はリンゴ、オレンジ、ポテトになります。

より洗練されたデータ構造を使用することもできますが、私がおそらく行うことは、配列を値として割り当てることです。あなたはそれを行うことができます、配列内の配列。構文的にどのように行われるかを正確に確認するには、php.net を確認してください。具体的には、次のリンクの例 #6 を確認してください 。これが役立つと思います: http://php.net/manual/en/language.types配列.php

于 2013-05-26T13:37:03.790 に答える