Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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中的if(TRUE)相同_Php_Laravel_Laravel 5 - Fatal编程技术网

是",;及;关键字与PHP中的if(TRUE)相同

是",;及;关键字与PHP中的if(TRUE)相同,php,laravel,laravel-5,Php,Laravel,Laravel 5,在Laravel5的一个模型类中,我遇到了下面的代码,我不确定这是什么意思 $query = User::query(); \Request::input('name') and $query->where('name', 'like', '%' . \Request::input('name') . '%'); \Request::input('email') and $query->where('email', 'like', '%' . \Request::input('em

在Laravel5的一个模型类中,我遇到了下面的代码,我不确定这是什么意思

$query = User::query();

\Request::input('name') and $query->where('name', 'like', '%' . \Request::input('name') . '%');
\Request::input('email') and $query->where('email', 'like', '%' . \Request::input('email') . '%');

return $query->paginate(15);
它与下面的代码相同吗

if (\Request::input('name')) {
    $query->where('name', 'like', '%' . \Request::input('name') . '%');
}

if (\Request::input('email')) {
    $query->where('email', 'like', '%' . \Request::input('email') . '%');
}
是的。PHP
&&
运算符在大多数情况下是相同的(除了优先级,我们可以在这里忽略它)。所有布尔运算符都用于短路评估;i、 e.
0和1
永远不可能是
true
,因为
0
是假的,所以PHP甚至不需要计算第二个操作数
1
。几乎所有语言都这样做

在这里,如果,则将其用作速记
。如果
\Request::input('name')
为truthy,则将计算第二个操作数
$query->…
,否则将跳过它


这在风格上是有问题的,几乎没有得到认可,尤其是因为它引发了这样的问题。您应该只编写一个传统的
,如果
,它更容易理解,并且不缺少需要保留的行。

“它与下面的代码相同吗?”是的,后者更具可读性。前者使用的是短路评估是…………第一个例子的风格很差,不应该使用。@Phil这个问题不是链接问题的真正副本,因为它更属于
if
语句。我知道你的意思,但这对新手来说很困惑…教程中有很多在线代码,比如
mysqli\u connect。。。或者die()
原理是一样的
基本上与
|
&&
相同,只是优先级不同(在您的示例中,这甚至不起作用)