我的IF语句正在改变PHP中的变量

use*_*509 2 php if-statement

我对整个编程事情都很陌生,所以如果这是一个愚蠢的问题,请原谅我.我以前没碰过它似乎很奇怪.

我正在尝试为蛋糕订购.您填写表单,提交表单,然后在新窗口中显示订单,然后点击"提交",然后将其上传到数据库.在提交表单之前,我有一系列If语句来检查表单中的错误.这是代码的简化版本.写作意味着你想要的任何文字,名字是你的名字,蛋糕是你想要的蛋糕类型(默认为"无").

try {
$name = trim($params->name);
$cake = trim($params->cake);
$writing = trim($params->writing);
if (strlen($name) < 3){
    throw new Exception("Please enter Your name.");
    }
if ($cake = "None") {
        throw new Exception("Please select a Cake"
     }
if ($cake = "Caramel Apple Pie" or $cake = "Pumpkin Pie" or $cake = "Eggnog Pie" and strlen($writing) > 1) {
    throw new Exception("We are sorry, but you can't write on any of our specialty pies.");
    }

} catch(Exception $x) {
    $error = $x->getmessage();
    }
Run Code Online (Sandbox Code Playgroud)

所以发生的事情是,当我第一次去提交时,会出现正确的蛋糕类型,但是当你第二次提交时,会出现错误,说我选择了"无".所有其他值都在那里并保持不变.我认为问题在于第一个"IF"语句(在哪里说"If($ cake ="None"))会自动将$ cake更改为"None",因为我已经尝试将该语句注释掉,然后它会将蛋糕更改为"焦糖苹果派",这是下一个IF声明的顶部.

任何人都知道为什么这样做?以及如何解决它?

Veg*_*ger 5

你使用的是a =而不是a==

  • =是一个赋值运算符,即它改变我们的变量值.在if-statement中使用它会导致设置变量并检查结果.
  • == 是一个比较操作
  • === 也是一个比较运算符,它还检查类型是否相等.

有关更多信息,请参阅PHP 赋值运算符比较运算符手册

补充说明:

  • 这条线throw new Exception("Please select a Cake"也不见了);.
  • $error在您的示例情况下,使用异常来编写消息有点矫枉过正!例如,只需使用$error = "Please enter Your name.".