Как создать массив по значениям?

Добрый вечер! Есть массив:
$arr = [
	
	1 => [
			'name' => 'User1',
			'post' => '100',
			'summ' => '7000',
	
	],
	
	2 => [
		
			'name' => 'User2',
			'post' => '200',
			'summ' => '6000',
	
	],

	3 => [
			'name' => 'User1',
			'post' => '300',
			'summ' => '3000',
	
	],
];

В нем есть одинаковые имена: User1- User1, User3-User3. Не соображу, как сделать из него вот такой массив:
$arr = [
	
	1 => [
			'name' => 'User1',
			
			'info' = > [
				['post' => '100',
				'summ' => '7000',
				],
				
				[
				'post' => '300',
				'summ' => '3000',
				],
			]
	
	],
	
	2 => [
		'name' => 'User2',
		'info' = > [
			'post' => '200',
			'summ' => '6000',
		],
	],

];


Пробовал через foreach, но не получается правильно сравнить name и собрать новый массив. Знаю, что это наверняка очень легко делается. Заранее спасибо.
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
0xD34F
@0xD34F
function groupData($data, $groupBy, $groupTo) {
  $grouped = [];

  foreach ($data as $t) {
    $name = $t[$groupBy];
    $grouped[$name][$groupBy] = $name;
    unset($t[$groupBy]);
    $grouped[$name][$groupTo][] = $t;
  }

  return array_values($grouped);
}

$grouped = groupData($arr, 'name', 'info');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы