-
Anonymous
Сгруппируйте двумерный массив по столбцу и создайте подмассивы в каждой группе.
Сообщение
Anonymous »
Я пытаюсь сгруппировать массив по его значениям. Ниже мой массив:
$array = Array
(
0 => Array
(
'name' = > 'Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '1000',
) ,
1 => Массив
(
'name' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'group' => '7777',
),
2 => Массив
(
'name' => ' Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '7777',
), 3 => Массив
(
'имя' => 'Джон Доу',
'возраст' => '36',
'код' => '437 ',
'group' => '4000',
),
4 => Массив
(
'name' => 'Джон Доу ',
'возраст' => '36',
'код' => '437',
'группа' => '4000',
),
5 => Массив
(
'name' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'group' => '5000',
),
6 => Массив
(
'name' => ' Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '6000',
),
7 => Массив
(
'имя' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '6000',
),
);
Я попробовал ниже:
Код: Выделить всё
$result = array();
foreach ($array as $key => $record) {
if (!isset($result[$record['code']])) {
$result[$record['code']] = array(
'name' => $record['name'],
'age' => $record['age'],
'groups' => array(array($record['code'], $record['group'])),
);
}
else {
$result[$record['code']]['groups'][] = array($record['code'],$record['group']);
}
}
$result = array_values($result);
print_r($result);
И я получаю:
Массив
(
[0] => Массив
(
[имя] => Джон Доу
[возраст] => 36
[группы] => Массив
(
[0] => Массив
(
[0] => 437
[1] => 1000
)
[1] => Массив
(
[0] => 437
[1] => 7777
)
[2] => Массив
(
[0] => 437
[1] => 7777
)
[3] => Массив
(
[0] => 437
[ 1] => 4000
)
[4] => Массив
(
[0] => 437
[1] => 4000 )
[5] => Массив
(
[0] => 437
[1] => 5000
)
[6] => Массив
(
[0] => 437
[1] => 6000
)
[7] => Массив
(
[0] => 437
[1] => 6000
)
)
)
)
Теперь я хочу, чтобы мой массив был сгруппирован по значениям группы 7777, 1000 и других (все остальные групповые значения):
Массив
(
[0] => Массив
(
[имя] => Джон Доу
[возраст] => 36
[7777] => Массив
(
[0] => Массив
(
[0] => 437
[1] => 7777
)
[1] => Массив
(
[0] => 437
[ 1] => 7777
)
)
[6000] => Массив
(
[0] => Массив
(
[ 0] => 437
[1] => 6000
)
[1] => Массив
(
[0] => 437 [1] => 6000
)
)
[others] => Массив
(
[0] => Массив
( [0] => 437
[1] => 1000
)
[1] => Массив
(
[0] => 437
[1] => 4000
)
[2] => Массив
(
[0] => 437
[1] => 4000
)
[3] => Массив
(
[0] => 437
[1] => 5000
)
)
)
)
Подробнее здесь:
https://stackoverflow.com/questions/517 ... each-group
1727946379
Anonymous
Я пытаюсь сгруппировать массив по его значениям. Ниже мой массив:
$array = Array
(
0 => Array
(
'name' = > 'Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '1000',
) ,
1 => Массив
(
'name' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'group' => '7777',
),
2 => Массив
(
'name' => ' Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '7777',
), 3 => Массив
(
'имя' => 'Джон Доу',
'возраст' => '36',
'код' => '437 ',
'group' => '4000',
),
4 => Массив
(
'name' => 'Джон Доу ',
'возраст' => '36',
'код' => '437',
'группа' => '4000',
),
5 => Массив
(
'name' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'group' => '5000',
),
6 => Массив
(
'name' => ' Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '6000',
),
7 => Массив
(
'имя' => 'Джон Доу',
'возраст' => '36',
'код' => '437',
'группа' => '6000',
),
);
Я попробовал ниже:
[code]$result = array();
foreach ($array as $key => $record) {
if (!isset($result[$record['code']])) {
$result[$record['code']] = array(
'name' => $record['name'],
'age' => $record['age'],
'groups' => array(array($record['code'], $record['group'])),
);
}
else {
$result[$record['code']]['groups'][] = array($record['code'],$record['group']);
}
}
$result = array_values($result);
print_r($result);
[/code]
И я получаю:
Массив
(
[0] => Массив
(
[имя] => Джон Доу
[возраст] => 36
[группы] => Массив
(
[0] => Массив
(
[0] => 437
[1] => 1000
)
[1] => Массив
(
[0] => 437
[1] => 7777
)
[2] => Массив
(
[0] => 437
[1] => 7777
)
[3] => Массив
(
[0] => 437
[ 1] => 4000
)
[4] => Массив
(
[0] => 437
[1] => 4000 )
[5] => Массив
(
[0] => 437
[1] => 5000
)
[6] => Массив
(
[0] => 437
[1] => 6000
)
[7] => Массив
(
[0] => 437
[1] => 6000
)
)
)
)
Теперь я хочу, чтобы мой массив был сгруппирован по значениям группы 7777, 1000 и других (все остальные групповые значения):
Массив
(
[0] => Массив
(
[имя] => Джон Доу
[возраст] => 36
[7777] => Массив
(
[0] => Массив
(
[0] => 437
[1] => 7777
)
[1] => Массив
(
[0] => 437
[ 1] => 7777
)
)
[6000] => Массив
(
[0] => Массив
(
[ 0] => 437
[1] => 6000
)
[1] => Массив
(
[0] => 437 [1] => 6000
)
)
[others] => Массив
(
[0] => Массив
( [0] => 437
[1] => 1000
)
[1] => Массив
(
[0] => 437
[1] => 4000
)
[2] => Массив
(
[0] => 437
[1] => 4000
)
[3] => Массив
(
[0] => 437
[1] => 5000
)
)
)
)
Подробнее здесь: [url]https://stackoverflow.com/questions/51787214/group-a-2d-array-by-a-column-and-create-subarrays-in-each-group[/url]