为什么或运算符不在foreach循环中工作

时间:2015-07-29 05:42:28

标签: php foreach

我在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(||)运算符在这种情况下不起作用?

3 个答案:

答案 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)

错误

  1. if(isset($_POST['submit']){遗失关闭)
  2. 在字符串比较中使用'
  3. 所以最终的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 />';
                }
            }
        }
    ?>