如果我想用简写条件并在条件中使用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;
}
答案 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;
}