У меня есть такой код в моем проекте Laravel, и я хочу вернуть его как один массив.
[
{
"id": "1",
"name": "value 1"
},
{
"id": "2",
"name": "value 2"
},
{
"id": "3",
"name": "value 3"
},
{
"id": "4",
"name": "value 4"
},
{
"id": "5",
"name": "value 5"
}
]
и я хочу получить такой
$output = "value 1,value 2,value 3,value 4,value 5";
$array = [];
foreach ($values as $value){
$array[] = $value['name'];
}
это вернет один массив, но если вы хотите, чтобы он был строкой (например, в вашем примере), вам нужно сделать следующее:
$string = взорвать (',', массив $);
$value.name
не является синтаксисом PHP.
Вы можете использовать метод уменьшения коллекции Laravel, чтобы получить вывод строки
$output = rtrim(
collect($data)->reduce(fn($carry, $item) => $carry . "{$item['name']},"), ','
);
ИЛИ
$output = implode(',', collect($data)->map(fn($item) => $item['name'])->all());
Это довольно просто с методами Collection:
collect($array)->pluck('name')->join(',')
Или с методами массива:
join(',', array_column($array, 'name'))
Это может помочь показать, что вы пробовали, и описать, что пошло не так. В противном случае может показаться, что никаких исследований не проводилось.