一尘不染

如何将一个变量与多个值进行比较

php

大家好我希望能够将国家变量与国家值进行比较如果国家变量不在我的列表中显示错误我有一个代码但它不起作用

else if($country  <> "Belgique")or ($country   <> "Luxembourg") or ($country   <> "France")or($country   <> "Pays-bas")
 {echo "The country variable is not in the list "; }

阅读 91

收藏
2022-07-25

共1个答案

一尘不染

首先,您有一个相当直接的语法错误:if语句的语法是if ( condition )注意那些括号 - 它们是 if 语句本身的一部分,而不是条件。当你写这个:

if ( $country <> "Belgique" )

条件是这样的:

$country <> "Belgique"

因此,如果您希望条件是这样的:

($country <> "Belgique") or ($country <> "Luxembourg") or ($country <> "France") or ($country <> "Pays-bas")

然后你必须把整个东西放在 if 语句的括号内:

if ( ($country <> "Belgique") or ($country <> "Luxembourg") or ($country <> "France") or ($country <> "Pays-bas") )

其次,您在将英语(或任何您的第一语言)翻译成形式逻辑时犯了一个常见错误:很容易假设这($country <> "Belgique") or ($country <> "Luxembourg")意味着“$country 既不是比利时也不是卢森堡”,但实际上它的意思是“如果 $country 不是比利时然后评估为真;另外,如果 $country 不是卢森堡,则评估为真”。

如果您提供“卢森堡”,则第一部分为真;如果您提供“比利时”,则第二部分为真;事实上,由于没有一个值$country同时是 Belgique 和 Luxembourg,所以结果总是正确的!

你真正想说的是“如果 $country 不是比利时并且$country 不是卢森堡,那么评估为真”:($country <> "Belgique") and ($country <> "Luxembourg")

所以:

if ( ($country <> "Belgique") and ($country <> "Luxembourg") and ($country <> "France") and ($country <> "Pays-bas") )

not ( A or B )(这个等价的事实( not A ) and ( not B )被称为德摩根定律。)


附带说明一下,在 PHP 中,andand 与 and不太or一样。请参阅stackoverflow.com/questions/4502092/php-and-or-keywords&&``||

尽管在这种情况下没有任何区别,因为您已经用括号将事物整齐地分组,&&并且||通常是您想要的运算符,给出:

if ( ($country <> "Belgique") && ($country <> "Luxembourg") && ($country <> "France") && ($country <> "Pays-bas") )

<> 含义相同!=,但也有更严格的含义!==

所以你可能真的想要这个:

if ( ($country !== "Belgique") && ($country !== "Luxembourg") && ($country !== "France") && ($country !== "Pays-bas") )
2022-07-25