PHP if或语句未按预期工作

PHP if或语句未按预期工作,php,if-statement,logical-operators,Php,If Statement,Logical Operators,我试图循环使用我的$u POST变量并显示只有key=lap*的数据。这是我目前掌握的代码 foreach($_POST as $key=>$val) { if($key != "time" || $key != "avgspd" || $key != "kartno") { echo $key . "<br>"; } } 如您所见,它仍然显示键avgspd、kartno和time。奇怪且令人困惑的是,如果我将代码更改为: foreac

我试图循环使用我的$u POST变量并显示只有key=lap*的数据。这是我目前掌握的代码

foreach($_POST as $key=>$val)
{
    if($key != "time" || $key != "avgspd" || $key != "kartno")
    {
        echo $key . "<br>";
    }
}
如您所见,它仍然显示键
avgspd
kartno
time
。奇怪且令人困惑的是,如果我将代码更改为:

foreach($_POST as $key=>$val)
{
    if($key == "time" || $key == "avgspd" || $key == "kartno")
    {
        echo $key . "<br>";
    }
}
这没有任何意义。如果我检查键是否不等于
time
avgspd
kartno
它会显示所有键,但当我说它只显示键“time”、“avgspd”或“kartno”时,它会按预期工作!这是怎么回事?我需要做什么来修复它。是以前的代码导致了错误吗?如果是这样,这是我的代码

Index.php

这总是正确的:

if($key != "time" || $key != "avgspd" || $key != "kartno")
你的意思是:

if($key != "time" and $key != "avgspd" and $key != "kartno")
您可以将其重写为:

if(! in_array($key,array("time","avgspd","kartno")))
这总是正确的:

if($key != "time" || $key != "avgspd" || $key != "kartno")
你的意思是:

if($key != "time" and $key != "avgspd" and $key != "kartno")
您可以将其重写为:

if(! in_array($key,array("time","avgspd","kartno")))

我相信您正在寻找
&&
。否则我会错过什么

foreach($_POST as $key=>$val)
{
    if($key != "time" && $key != "avgspd" && $key != "kartno")
    {
        echo $key . "<br>";
    }
}

我相信您正在寻找
&&
。否则我会错过什么

foreach($_POST as $key=>$val)
{
    if($key != "time" && $key != "avgspd" && $key != "kartno")
    {
        echo $key . "<br>";
    }
}
给你:

foreach($_POST as $key=>$val)
{
    if($key != "time" && $key != "avgspd" && $key != "kartno")
    {
        echo $key . "<br>";
    }
}
foreach($\发布为$key=>$val)
{
如果($key!=“time”&&$key!=“avgspd”&&&$key!=“kartno”)
{
回声$key.“
”; } }
解释:如果你把OR语句放在这里,它会一直打印出来,因为你基本上告诉你的程序如果它不同于“time”或“avgspd”,就要打印它。“时间”与“avgspd”不同,所以它会打印出来。

给你:

foreach($_POST as $key=>$val)
{
    if($key != "time" && $key != "avgspd" && $key != "kartno")
    {
        echo $key . "<br>";
    }
}
foreach($\发布为$key=>$val)
{
如果($key!=“time”&&$key!=“avgspd”&&&$key!=“kartno”)
{
回声$key.“
”; } }

解释:如果你把OR语句放在这里,它会一直打印出来,因为你基本上告诉你的程序如果它不同于“time”或“avgspd”,就要打印它。“时间”和“avgspd”不同,所以它会打印。

问题是您的预期输出是什么?(顺便说一句:很好的配置文件图片:)第一个if语句是:如果值不等于:
时间,它将同时输入avgspd和kartno
。(因此,正如您可能看到的,一个值等于3个不同的值是不可能的)第二个if语句:如果它等于3个值中的一个,则输入if语句。我猜您可能想做的是说:如果它不是三个值之一,即:
$key!=“val1”&&$key!=“val2”…
@Rizier123我希望它显示以“lap”开头的按键。你在问题中说过吗!:P永远住在候机楼。谁需要GUI!哈哈,为什么MS-DOS的时代消失了?哈哈。假设ArchLinux更好!:)问题是您的预期输出是什么?(顺便说一句:很好的配置文件图片:)第一个if语句是:如果值不等于:
时间,它将同时输入avgspd和kartno
。(因此,正如您可能看到的,一个值等于3个不同的值是不可能的)第二个if语句:如果它等于3个值中的一个,则输入if语句。我猜您可能想做的是说:如果它不是三个值之一,即:
$key!=“val1”&&$key!=“val2”…
@Rizier123我希望它显示以“lap”开头的按键。你在问题中说过吗!:P永远住在候机楼。谁需要GUI!哈哈,为什么MS-DOS的时代消失了?哈哈。假设ArchLinux更好!:)哇,我被打得很惨,酷。谢谢你,如果从圈开始!这就是我想做的,但我不确定我能不能。哇,我被打得很惨。酷。谢谢你,如果从圈开始!这就是我想做的,但我不确定我是否能做到。