我在php页面中有一个html表单,表单在提交后在同一个php中处理:
page:1: form.php
<form action="" method="post">
<input type="hidden" name="id" value="25" />
<input type="hidden" name="typid" value="250" />
Name: <input type="text" name="name" value="Mr.X" /><br />
Address: <input type="text" name="address" value="USA" /><br />
Mobile: <input type="text" name="mobile" value="1234567890" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
if(isset($_POST['submit']){
foreach($_POST as $key=>$value){
if($key!='id' || $key!='typid'){
echo $key.' : '.$value.'<br />';
}
}
}
?>
根据foreach循环内的条件,输出应该是这样的:
name : Mr.X
address : USA
mobile: 1234567890
但它提供的输出如下:
id : 25
tpid : 250
name : Mr.X
address : USA
mobile: 1234567890
如果我从foreach循环中的'if'条件中删除一个条件,如下所示:
if(isset($_POST['submit']){
foreach($_POST as $key=>$value){
if($key!='id'){
echo $key.' : '.$value.'<br />';
}
}
}
输出符合预期:
tpid : 250
name : Mr.X
address : USA
mobile: 1234567890
为什么OR(||)运算符在这种情况下不起作用?
答案 0 :(得分:3)
OR条件不适用于此。
如果任何条件为真,则 OR
条件返回true。
您希望这两个条件都是true
。
您已检查$key
不是id
,也不是typid
。
你需要和条件。
更正后的代码:
if($key!='id' && $key!='typid'){
答案 1 :(得分:2)
if($ key!=&#39; id&#39; || $ key!=&#39; typid&#39;)
OR条件: -
1 0 = 1
0 1 = 1
0 0 = 0
1 1 = 1
或将始终打印,直到两个语句都为假。
AND条件: -
1 0 = 0
0 1 = 0
0 0 = 0
1 1 = 1
所以AND Condition将是您完美的期望。
谢谢
答案 2 :(得分:0)
if(isset($_POST['submit']){
遗失关闭)
'
所以最终的Well-Form答案是
<form action="" method="post">
<input type="hidden" name="id" value="25" />
<input type="hidden" name="tpid" value="250" />
Name: <input type="text" name="name" value="Mr.X" /><br />
Address: <input type="text" name="address" value="USA" /><br />
Mobile: <input type="text" name="mobile" value="1234567890" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
if(isset($_POST['submit']))//changed
{
foreach($_POST as $key=>$value)
{
if($key!='id' && $key!='typid')//changed
{
echo $key.' : '.$value.'<br />';
}
}
}
?>