laravel中的三元条件

时间:2017-07-24 07:49:52

标签: php laravel laravel-5 ternary-operator

我必须实现记住我的功能,所以我必须将$remember的值作为Auth:attempt();函数中的第二个参数传递。但问题是,当我使用此语法在$remember中设置值时,它会显示语法错误

$remember = isset($request->input('remember')) ? true : false;
----------------------------------------------^//Expected: variable

但是当我使用这种语法时,它不会给出任何错误

$remember = isset($request->remember) ? true : false;

4 个答案:

答案 0 :(得分:1)

使用has()

$request->has('remember')
  

您应该使用has方法来确定请求中是否存在值。如果值存在且不是空字符串,则has方法返回true。

答案 1 :(得分:1)

has的使用方式如下:

$remember = $request->has('remember'); //return true if the remember is selected :)

对于您的问题,上述两种语法之间的区别是什么:

这是因为isset是一种语言结构,而不是一种真正的功能。它在docs中提到:

  

警告

     

isset()仅适用于变量,因为传递任何其他内容都会产生   在解析错误。要检查是否设置了常量,请使用defined()函数。

答案 2 :(得分:0)

试试这个

$r = $request->input('remember');
$remember = isset($r)?true:false;

答案 3 :(得分:0)

请求类已经有一个内置方法来检查是否设置了参数:

if ($request->has('remember')) {
    // remember is set
} else {
    // remember is not set
}

但是有一种更好的方法来做你想要实现的目标。请求类也有一个方法get,它接受​​键作为第一个参数,默认值作为第二个参数(如果未设置键则返回)

所以你可以这样写:

Auth::attempt([...], $request->get('remember', false));