gpt4 book ai didi

php - $this->something() || 是做什么的PHP 速记/快捷方式中的 somefunction($somevar) 是什么意思?

转载 作者:行者123 更新时间:2023-12-04 14:29:36 26 4
gpt4 key购买 nike

我正在使用 CodeIgniter 学习 PHP,这是我第一次想到这段代码:

...
$dashboard = 'admin/dashboard';
$this->user_model->loggedin() == FALSE || redirect($dashboard); // <-- ???

...

这是什么意思?第 2 行后有一个行空间。

它像三元运算符吗?

==== 由于澄清问题而更新 ====

例如,如果我想使用 IF 运算符,我会这样做:

if( $logged_in === TRUE ){
// do something
}

或者像这样没有 { } 大括号的 IF 运算符,其中只有一行:

if( $logged_in === TRUE )
// do something
// this line is not a part of 2 lines above

问题是,为什么 $this->user_model->loggedin() == FALSE || 之后什么都没有重定向($仪表板);?为什么下一行是空的,它真正返回了什么?我该如何检查?

最佳答案

您可能知道,逻辑或运算符 (||) 将检查 bool 表达式中的任何一个是否为真。

假设我们有两个函数 ab 返回 bool 值,我们想检查其中一个是否返回 true:

function a() {
echo "function a was called\n";
return true;
}

function b() {
echo "function b was called\n";
return false;
}

if (a() || b()) {
echo "hello\n";
}

在这种情况下,输出将是:

function a was called

hello

如果我们正在检查至少一个表达式是否为真并且第一个表达式的计算结果为 true,那么我们不需要检查第二个表达式是否也为真,对吗?这就是为什么我们没有在该示例的输出中也看到 function b was called 的原因。

如果我们交换 ab 的返回值,那么 a 将返回 falseb 将返回 true,这两个函数将被执行,因为它必须检查第二个调用是否会在 if 语句中返回 true。

您的代码中有类似的情况。 redirect($dashboard) 只有在第一个条件 ($this->user_model->loggedin() == FALSE) 被评估为 false 时才会执行。可以通过这种方式在不更改功能的情况下编写此代码:

if (!($this->user_model->loggedin() == FALSE)) {
redirect($dashboard);
}

……或者……

if ($this->user_model->loggedin() == TRUE) {
redirect($dashboard);
}

...或者只是...

if ($this->user_model->loggedin()) {
redirect($dashboard);
}

关于php - $this->something() || 是做什么的PHP 速记/快捷方式中的 somefunction($somevar) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19879876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com