我在下面找到了这段代码,它完美地满足了我的需要,但我有超过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;
?>
发布于 2012-10-30 22:30:44
创建映射数组更容易:
$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语句来使用urls:
$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-30 22:30:51
考虑将选项的值更改为类似以下内容:
<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-30 22:31:04
您可以使用一个数组,将值作为键,将文本作为值:
// 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);
https://stackoverflow.com/questions/13141125
复制相似问题