Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php如果(不是这个或不是这个){做一些事情}_Php_If Statement - Fatal编程技术网

php如果(不是这个或不是这个){做一些事情}

php如果(不是这个或不是这个){做一些事情},php,if-statement,Php,If Statement,我试了很多次,但都不起作用。 我想做像第一个小鸡,但第二个不工作。请帮帮我 此代码正在运行 <?php $a = 2; if ( $a == 2 || $a == 3 ) { echo "OK"; }else { echo "Error !!!!!!!"; } ?> 但这一条不起作用,它一直都是真的 <?php $a = 2; if ( $a !== 2 || $a !== 3 ) {

我试了很多次,但都不起作用。 我想做像第一个小鸡,但第二个不工作。请帮帮我

此代码正在运行

<?php
    $a = 2;

    if ( $a == 2 || $a == 3 ) {
        echo "OK";
    }else {
        echo "Error !!!!!!!";
    }
?>

但这一条不起作用,它一直都是真的

<?php
    $a = 2;

    if ( $a !== 2 || $a !== 3 ) {
        echo "Error";
    }
?>

请帮我把它分解一下:

if ( $a !== 2 || $a !== 3 ) {
    echo "Error";
}
注意两件事:

  • 如果
    $a==2
    ,则
    $a==3
  • 如果
    $a==3
    ,则
    $a==2
这意味着其中一个条件将始终为真,因此
if
语句将始终执行,因为
|
是OR语句


如果要在
$a
不是2或3时执行,则应编写:

if ( $a !== 2 && $a !== 3 ) {
或:

这样,代码将仅在
$a
既不是
2
也不是
3
时执行


维基百科关于(谢谢@Marc)的文章对此进行了探讨,其中指出:

这些规则允许通过否定来表达连接和析取

这些规则可以用英语表示为:

连接的否定是否定的析取。
析取的否定是否定的连词

或非正式地说:

“非(A和B)”与“(非A)或(非B)”相同
而且,
“非(A或B)”与“(非A)和(非B)”相同


当要求不等于以下内容时,您需要稍微不同的逻辑:

if(!(a==2 || a==3)){}

您最初所说的将转化为“如果a不是2或不是3,那么…”,而您想要的是“如果a不是2或3,那么…”

Try!=而不是==第二个总是正确的,因为其中一个语句总是正确的,因为$a不能是2和3。@ChrisG这不会有什么区别。只有当语句为。Demo PleaseThanks@Marc,添加到我的答案中。
if(!(a==2 || a==3)){}