我有这段代码:
class Menu
{
public function render()
{
$res = '';
collect($this->items)->each(function ($item) use (&$res) {
$res .= $item->render();
});
return $res;
}
}
我想返回相同的值但删除$res
。有没有办法实现这个目标?
答案 0 :(得分:0)
您可以使用array_reduce:
class Menu
{
public function render()
{
return array_reduce(collect($this->items)->toArray(), function ($res, $item) {
return $res . $item->render();
}, '');
}
}
但效率较低,因为$res
的值将被复制而不是通过引用传递。
答案 1 :(得分:0)
解决这个问题:
class Menu
{
public function render()
{
return collect($this->items())->reduce(function ($carry, $item) {
return $carry . $item->render();
}, '');
}
}