【问题标题】:Why is this PHP switch acting up为什么这个 PHP 开关起作用了
【发布时间】:2013-09-12 23:20:47
【问题描述】:

我正在完成这项任务,我们需要创建一个小型网络应用程序,让某人在三明治上点他们想要的东西,然后用更简单的术语来表达谁得到了制作三明治的订单。

我已经就这个问题问了几个问题,但我遇到了最后一个障碍,已经解决了一个小时的问题,无法弄清楚出了什么问题。如果我只是注释掉 PHP 中的 cheesetype 开关,一切都会正常工作,但是一旦我重新引入它,就会出现服务器错误。我检查了所有语法三倍以上,但是一旦该开关出现,事情就会变得不稳定。我做错了什么?

HTML

<!DOCTYPE html>
<html>
<head>
<title>Sandwich Order</title>
</head>
<body>
<form name="sandwichform" method="post" action="sandwichmaker.php">
Size
<select name="size">
    <option value="small">Small</option>
    <option value="medium">Medium</option>
    <option value="large">Large</option>
</select><br/>
Meat Type
<select name="meattype">
    <option value="ham">Ham</option>
    <option value="turkey">Turkey</option>
    <option value="beef">Roast Beef</option>
    <option value="salami">Salami</option>
</select><br/>
Cheese
<select name="cheesetype">
    <option value="american">American</option>
    <option value="swiss">Swiss</option>
    <option value="jack">Monterey Jack</option>
</select><br/>
Bread Type
<select name="breadtype">
    <option value="white">White</option>
    <option value="wheat">Wheat</option>
</select><br/>
Condiments<br/>
Ketchup<input type="checkbox" name="condiments[]" value="ketchup"><br>
Mustard<input type="checkbox" name="condiments[]" value="mustard"><br>
Mayonnaise<input type="checkbox" name="condiments[]" value="mayo"><br>
BBQ Sauce<input type="checkbox" name="condiments[]" value="bbq"><br>
<b>Extras:</b><br/>
Tomato<input type="checkbox" name="extras[]" value="tomato"><br>
Lettuce<input type="checkbox" name="extras[]" value="lettuce"><br>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>

PHP

<?php

$breadtype=$_POST['breadtype'];
$size=$_POST['size'];
$meattype=$_POST['meattype'];
$cheesetype=$_POST['cheesetype'];
$condiments=$_POST['condiments'];
$extras=$_POST['extras'];

if ($breadtype == "white")
{
    $breadimage="images/whitebread.jpg";
}
elseif ($breadtype == "wheat")
{
    $breadimage="images/wheatbread.jpg";
}

$breadoutput="<img src=\"$breadimage\" />";

switch ($size) {
case "small":
    $slices=2;
    break;
case "medium":
    $slices=4;
    break;
case "large":
    $slices=6;
    break;
}

$sizeoutput=$slices ." slices of";

switch ($meattype) {
case "ham":
    $meatimage="images/ham.jpg";
    break;
case "turkey":
    $meatimage="images/turkey.jpg";
    break;
case "beef":
    $meatimage="images/turkey.jpg";
    break;
case "salami":
    $meatimage="images/salami.jpg";
    break;
}

$meatoutput="<img src=\"$meatimage\" />";

$switch ($cheesetype) {
case "american":
    $cheeseimage="images/american.jpg";
    break;
case "swiss":
    $cheeseimage="images/swiss.jpg";
    break;
case "jack":
    $cheeseimage="images/jack.jpg";
    break;
}

$cheeseoutput="<img src=\"$cheeseimage\" />";

foreach ($extras as $extra)
{
    $ei="images/" .$extra .".jpg";

    $extrasimage .= "<br/><img src=\"$ei\"/>";
}

$extrasoutput="and " .$extrasimage;

foreach ($condiments as $condiment)
{
    $ci="images/" .$condiment .".jpg";

    $condimentsimage .= "<br/><img src=\"$ci\"/>";
}

$condimentsoutput="and " .$condimentsimage;

echo $breadoutput;
echo "<br>";
echo $sizeoutput;
echo "<br>";
echo $meatoutput;
echo "<br>";
echo $cheeseoutput;
echo "<br>";
echo $extrasoutput;
echo "<br>";
echo $condimentsoutput;
?>

【问题讨论】:

  • 怎么了? “服务器错误” - 什么服务器错误?
  • 它的switch 不是$switch
  • 你有$switch ($cheesetype) - 你需要删除最初的$
  • 轻笑 大学里的人! :-)
  • +1 很酷的任务——当我学习编程时,我们都在为你创建虚构的银行来贷/存 $$$。

标签: php html switch-statement


【解决方案1】:
$switch ($cheesetype) {

应该是

switch ($cheesetype) {

放下$ 符号。

【讨论】:

  • 哇。浪费了一个小时。非常感谢。
  • 我曾经花了 3 小时 + 1 小时的车程去大学,让我的导师告诉我,我在声明的末尾有一个额外的;。最容易犯的错误很容易传给守门员。
  • 使用好的 IDE 可以让您远离此类错误。我个人使用 Aptana Studio。
【解决方案2】:

应该是 switch 而不是 $switch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2017-06-19
    • 2010-10-20
    相关资源
    最近更新 更多