如果有退货,我该如何使用速记

时间:2018-10-01 04:02:38

标签: php laravel

如果我想用简写条件并在条件中使用return,我该怎么做

这是我的控制人

public function index()
{
    $all = User::all()
    $all = $this->calculatePercent($all);
    return view('dashboard.index');
}

我想提出条件

If (!empty($user)){
    $user = $user;
} else {
    return 0
}

我该怎么做:

public function calculatePercent($user) 
{
    $query = !empty($user) ? $user : return 0;
}

更新我想在我的函数中做类似的事情

public function calculatePercent($user) 
{
    $user = !empty($user) ? $user : return 0;
    foreach ($user as $item) {
        $percentSell[] = ($item->total * 100)/$item->target;
    }
    return $percentSell;
}

2 个答案:

答案 0 :(得分:2)

很遗憾,您目前无法从三元表达式的条件之一(如果是简写形式)中返回。

正在做

$foo = true ? return true : false;

给你

syntax error, unexpected 'return'

也就是说,对于单行if's,您可以省略{}大括号

if(true) return true; else $foo = false;

实际上还没有那么长。我不确定为什么会这样(不能在三进制中做到)。可能是因为它具有某种隐含的回报。可能是因为返回结束了您所处的范围,因此三进制无法完成。或者可能是因为它可以进行这样的分配(如上所示):

$foo = true ? return true : false;
$foo = return true; //this gives the same syntax error

无论出于何种原因,在当前版本的PHP中都是不可能的。也许将来某个时候他们可能会这样做,但这似乎是一件低优先级的事情,所以我不会屏住呼吸...大声笑

为完整性起见,您可以更改以下内容:

$query = !empty($user) ? $user : return 0;

进入

if(!empty($user))$query=$user;else return 0;

还请注意,您可以在某些位置删除空格。这样的速记方法很好,但是关于可读性有话要说。为此,可能不错,但是可读性在代码中非常重要,而比IMO简洁明了更重要。

当我编写代码时,我的优先级是

  • 它达到了预期的结果
  • 可读性
  • 简洁(不肿)
  • 预成型效果好

如果它不执行应有的功能,那么它一文不值,如果您看不懂,则很难维护并确保它应有的功能。如果它有很多不必要的膨胀,则很难阅读,并且性能可能很差。一旦满足了所有这些条件,那么如果需要,我将尝试提高其性能。

无论如何都快乐编码!

答案 1 :(得分:1)

public function calculatePercent($user) 
{
    if (empty($user)) return 0; // if $user is empty code ends here with return 0.

    foreach ($user as $item) {
        $percentSell[] = ($item->total * 100)/$item->target;
    }

    return $percentSell;
}