Старайтесь не инициализировать переменную для хранения результатов каждого ()

У меня есть этот код:

class Menu
{
public function render()
{
$res = '';

collect($this->items)->each(function ($item) use (&$res) {
$res .= $item->render();
});

return $res;
}
}

Я хотел бы вернуть то же значение, но удаляя $res, Есть ли способ добиться этого?

0

Решение

Вы можете нанять array_reduce:

class Menu
{
public function render()
{
return array_reduce(collect($this->items)->toArray(), function ($res, $item) {
return $res . $item->render();
}, '');
}
}

но это менее эффективно, так как значение $res будет скопирован вместо передачи по ссылке.

0

Другие решения

Решил это так:

class Menu
{
public function render()
{
return collect($this->items())->reduce(function ($carry, $item) {
return $carry . $item->render();
}, '');
}
}
0

По вопросам рекламы [email protected]