首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php切换案例:如果我们有30个选项,我们是必须创建30个if语句,还是有更简单的方法?

php切换案例:如果我们有30个选项,我们是必须创建30个if语句,还是有更简单的方法?
EN

Stack Overflow用户
提问于 2012-10-30 22:28:12
回答 4查看 2.3K关注 0票数 2

我在下面找到了这段代码,它完美地满足了我的需要,但我有超过30个选项,还有什么我可以做的来缩短代码吗?

代码语言:javascript
运行
复制
<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;

    ?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-30 22:30:44

创建映射数组更容易:

代码语言:javascript
运行
复制
$map = array(
    'Jehzeel2' => 'Jehzeel likes bananas';
    'Jehzeel3' => 'Jehzeel likes oranges';
);

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

尽管您可能需要对代码结构三思而后行,但这看起来是一种糟糕的做法。

快捷方式:

代码语言:javascript
运行
复制
<?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语句来使用urls:

代码语言:javascript
运行
复制
$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']];
}
票数 4
EN

Stack Overflow用户

发布于 2012-10-30 22:30:51

考虑将选项的值更改为类似以下内容:

代码语言:javascript
运行
复制
<select name="dropdown">
    <option value="apples">Jehzeel1</option>
    <option value="bananas">Jehzeel2</option>
    <option value="oranges">Jehzeel3</option>
</select>

然后简单地在你的php代码中:

代码语言:javascript
运行
复制
$valid_fruits = array("apples", "bananas", "oranges");

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

我希望它能帮上忙。干杯

票数 2
EN

Stack Overflow用户

发布于 2012-10-30 22:31:04

您可以使用一个数组,将值作为键,将文本作为值:

代码语言:javascript
运行
复制
 // 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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13141125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档