【发布时间】:2019-01-02 10:33:12
【问题描述】:
我正在尝试计算用户年龄,然后将这些结果分组如下:
public function setAge($users)
{
if($users)
foreach($users as $user)
{
$now = Carbon::now();
$u->age = Carbon::createFromFormat('Y-m-d', $u->birth_date);
$u->age = $now->diffInYears($u->age)
}
return $users;
}
public function groupByAge($users)
{
$ageGroups = ['less than 20', 'more than 20'];
foreach ($users as $u)
switch($u->age) {
case ($u->age < 20)
$ageGroups['less than 20'] += 1;
break;
case($u->age > 20)
$ageGroups['more than 20'] += 1;
break;
}
return $age;
}
public function index()
{
$users = DB::table('users')->get;
$users = $this->setAge($users);
$users = $this->groupByAge($users);
dd($groupByAge);
return view('/users/',['users'=> $users]);
}
但是当我dd($groupByAge) 时,我总是收到
空数组,例如 ('key' => 0)
我不确定我是否没有正确传递$users 或者发出了什么。
【问题讨论】:
-
$groupByAge不是您要 dd 的变量。而是 dd$users变量 -
如果
$u->age == 20怎么办? -
endforeach和endif在 PHP 上下文中是什么意思?$u是什么?您使用它u->birth_date(顺便说一句。缺少 $ 符号)之前没有声明它。请提供一个没有语法错误的代码示例。 -
检查您的
groupByAge函数,它返回从未设置的$age。那foreach没有在任何地方关闭?此外,$ageGroup['less then 20']与$ageGroup['less than 20']不同。 -
@commonsense
endif和endforeach是 alternative syntaxes。也不知道.. 但是:缺少语法