Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 如果带or和boolean from函数的方括号不起作用,则此函数很简单_Php - Fatal编程技术网

Php 如果带or和boolean from函数的方括号不起作用,则此函数很简单

Php 如果带or和boolean from函数的方括号不起作用,则此函数很简单,php,Php,我是PHP新手,没有运行以下简单代码: if( !isset( $_COOKIE["itsmejoe"]) || !isBot() ){ echo "yes"; }else{ echo "no"; }; function isBot(){ return true; } 如果我将isBot()输出从true更改为false,它将给出yes或no。 在我的例子中,总是有一个肯定的答案。 有什么问题吗?如前所述,当未设置$\u COOKIE[“itsmejoe”]或isB

我是PHP新手,没有运行以下简单代码:

if( !isset( $_COOKIE["itsmejoe"]) ||  !isBot()  ){
    echo "yes";
}else{
    echo "no";
};

function isBot(){
   return true;
}
如果我将isBot()输出从true更改为false,它将给出yes或no。 在我的例子中,总是有一个肯定的答案。
有什么问题吗?

如前所述,当未设置
$\u COOKIE[“itsmejoe”]
isBot()
返回false时,您传递的是true


当您将
isBot()
的输出更改为false时,它将始终返回“yes”。

当使用“!”运算符时,这意味着如果其中一条语句为false,则整个语句为true。在我看来,这是一种糟糕的编码实践,因为它过于复杂,没有增加任何价值。使陈述更简单,以便在事情不起作用时易于理解

我假设您想要的是,如果设置了cookie,它会说是,除非
isBot()
为true,如果未设置cookie,则会说“否”,无论
isBot()
是否为true。如果是这样的话,我认为它简化了使用,而不是OR

if( isset( $_COOKIE["itsmejoe"]) $$ !isBot()  ){
    // requirements for "yes": cookie is set and isBot is false
    echo "yes";
} else {
    echo "no";
};

谢谢你的回答。我需要的是,如果isBot为true,它将显示“no”解除对cookie的依赖;函数isBot(){return true;}@hamburger在这种情况下,用AND替换OR运算符。将| |替换为&&它将按照您的意愿工作。如果isBot为true,则显示“否”(与cookie无关)