我是php的新手,这是我在这里发表的第一篇文章,也是写帖的新手。 我正在使用脚本来表达表单输入。部分脚本如下:
$data=$_POST;
print_r($data);
if(($data['dm']="No") and (!empty($data['dmsince']))):
$error=$error." dm mismatch N";
endif;
if(($data['dm']="Yes") and (empty($data['dmsince']))):
$error=$error." dm mismatch Y";
endif;
if ($error):
print $error;
$error="";
print $form;
else:
print "OK";
我通过select语句接受$_POST['dm']
为是或否。
发生的问题是处理表单时:
$_POST['dm']='No'
和$_POST['dmsince']
为空。
我收到错误为'dm mismatch Y'
。
$_POST['dm']
= Yes
和$_POST['dmsince']='some valid date'
我收到错误为'dm mismatch N'
。
从逻辑上讲,在这两种情况下我都不应该收到任何错误。它似乎是强行进入其中一个循环。 我也试过没有结果的elseif。 这段代码有什么问题?
答案 0 :(得分:3)
更新您的条件以实际使用条件比较运算符(即==
或===
)。现在你将$ data ['dm']分配给第一个条件中的“否”和第二个条件中的“是”。
你可能也想养成这样写比较的习惯:
if(true === $var)
if("Yes" === $var2)
使用项目比较左侧的变量。以这种方式,如果你不小心做了类似的事情:
if(true=$var)
PHP会抛出错误,而不是像这样的情况
if($var=true)
这将设置$ var = true并始终将条件评估为真。
它使您的代码调试变得更加容易。