2

私はこのコードを以下に見つけましたが、それは私が望むものに完璧に機能しますが、30 以上のオプションがあります。コードを短くするために他にできることはありますか?

<html>
<body>
    <form method="post" action="?">
    <select name="dropdown">
    <option value="Jehzeel1">Jehzeel1</option>
    <option value="Jehzeel2">Jehzeel2</option>
    <option value="Jehzeel3">Jehzeel3</option>
    </select>
    <input type="submit" value="submit">
    </form>
</body>
</html>



    <?php
    switch ($_POST['dropdown'])  { 

        case "Jehzeel1":
         echo "Jehzeel likes apples";
        break;

        case "Jehzeel2":
         echo "Jehzeel likes bananas";
        break;

        case "Jehzeel3":
         echo "Jehzeel likes oranges";
        break;

    ?>
4

4 に答える 4

4

マッピング配列を作成する方が簡単です:

$map = array(
    'Jehzeel2' => 'Jehzeel likes bananas';
    'Jehzeel3' => 'Jehzeel likes oranges';
);

echo $map[$_POST['dropdown']];

コード構造についてよく考えた方がよいかもしれませんが、これは悪い習慣のように思えます。

近道:

<?php
$fruits = array('apples', 'oranges', 'bananas');
?>
<form method="post">
    <select name="dropdown">
    <?php foreach ($fruits as $fruit) : ?>
        <option value="<?php echo $fruit ?>"><?php echo $fruit ?></option>
    <?php endforeach; ?>
    </select>
    <input type="submit" value="submit" />
</form>
<?php
if (in_array($_POST['dropdown'], $fruits)) {
    echo 'Jehzeel likes ' . $_POST['dropdown'];
}
?>

編集

配列と if ステートメントを少し変更することで、URL を使用できます。

$urls = array('url1' => 'http://www.facebook.com/', 'url2' => 'http://www.google.com/', 'url3' => 'http://www.yahoo.com/');

if (isset($urls[$_POST['dropdown']])) {
    echo 'URL: ' . $urls[$_POST['dropdown']];
}
于 2012-10-30T14:30:44.407 に答える
2

キーとして値を使用し、値としてテキストを使用する配列を使用できます。

 // array of key/value pairs
 $text = array(
     "Jehzeel1" => "apples",
     "Jehzeel2" => "bananas",
     "Jehzeel3" => "oranges",
 );
 // create your key from the post value, make sure it is actually set
 $key = isset($_POST['dropdown']))? $_POST['dropdown'] : "";
 // echo the value based on the key, if the key exists
 $value = (array_key_exists($key, $text))? $text[$key] : "nothing";
 // assuming all the text starts with "Jehzeel likes" you can sprintf the value
 echo sprintf("Jehzeel likes %s.", $value);
于 2012-10-30T14:31:03.910 に答える
2

オプションの値を次のように変更することを検討してください。

<select name="dropdown">
    <option value="apples">Jehzeel1</option>
    <option value="bananas">Jehzeel2</option>
    <option value="oranges">Jehzeel3</option>
</select>

次に、php コードで次のようにします。

$valid_fruits = array("apples", "bananas", "oranges");

$fruit = $_POST['dropdown'];
if(in_array($fruit,$valid_fruit))
    echo "Jehzeel likes $fruit"

お役に立てば幸いです。乾杯

于 2012-10-30T14:30:51.087 に答える
0

オプションを使用して配列を作成します

$DropdownLabels = array (
    'dropdown1' => 'Dropdown1 Long Label',
    'dropdown2' => 'Dropdown2 Long Label',
    // ...,
);

次に、を使用$DropdownLabels[$_POST['dropdown']]して、が存在するかどうかをテストしarray_key_exists($_POST['dropdown'], $DropdownLabels)ます。

于 2012-10-30T14:31:06.107 に答える