Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ictoplossing's avatar

Nested object. How get data and remap array

Hello,

I have json-return:

{
"id": 3,
"forename": "Ellen",
"name": "De Vos",
"label": "Ellen De Vos",
"value": 3,

"spoken_languages": [
{"id": 168,
"name": "Dutch",
"code": "nl",
"local_name": "Nederlands",
"dutch_name": "Nederlands",
"order": 100,
},
{"id": 60,
"name": "English",
"code": "en",
"local_name": "English",
"dutch_name": "Engels",
"order": 98,
"updated_at": null,
"created_at": null,
"pivot": {
"person_id": 3,
"language_id": 60}
}]},

PersonController.php:

$persons = $persons
		->with([
			'personAddresses',
			'spokenLanguages',
			'createdByUser',
		])
		->get(['id', 'forename', 'name']);

	foreach ($persons as $k => $v) {

					/*foreach ($v->spokenLanguages as $spokenLanguage) {
							$v['lng'] = $spokenLanguage['name'];
						}*/

		$v['label'] = $v['forename'] . ' ' . $v['name'];

		$v['value'] = $v['id'];

	}

return Response::json($persons, 200);

How to put comma-separated languages into key $v['label'] ?

I would like to get in $v['label'] something like this: Ellen De Vos (Dutch, English)

If I try:

foreach ($v->spokenLanguages as $spokenLanguage) {
	$v['label'] = $spokenLanguage['name'];
}

I get only first language.

Where am i wrong?

Tnx

0 likes
4 replies
Sergiu17's avatar
Sergiu17
Best Answer
Level 60
foreach($persons as $person) {
	$person->label = $person->spoken_languages->pluck('name')->join(', ');
}

Please or to participate in this conversation.