У меня есть данные sql следующим образом:
+++++++++++++++++++++++++++++++++
+ id name group +
+ 1 cs1 1,2 +
+ 2 cs2 1,3 +
+ 3 cs3 2,3 +
+++++++++++++++++++++++++++++++++
Я хотел выбрать имена для каждой группы, которая представлена идентификаторами группы в столбце группы. Я так много искал, но не могу понять, как получить данные для каждой группы с помощью PHP.
Я хочу, чтобы результат был:
++++++++++++++++++++++++++++++++
+group members +
+ 1 cs1 +
+ cs2 +
+ 2 cs2 +
+ cs3 +
+ 3 cs2 +
+ cs3 +
++++++++++++++++++++++++++++++++
или
$group1 = array (cs1, cs2);
Мы высоко ценим ваши ценные идеи.
Спасибо.
Рассмотрите возможность изменения этого списка ключей, разделенных запятыми, в таблицу ссылок.






Используя PHP, вы можете читать данные, получать группы, а затем находить каждого члена, чтобы построить массив сопоставления групп с членами ...
$data = [
[
'id' => 1,
'name' => 'cs1',
'group' => '1,2'
],
[
'id' => 2,
'name' => 'cs2',
'group' => '1,3'
],
[
'id' => 3,
'name' => 'cs3',
'group' => '2,3'
]
];
$groups = [];
foreach ($data as $item) {
foreach (explode(',', $item['group']) as $group) {
$groups[] = $group;
}
}
$groups = array_unique($groups);
sort($groups);
$group_members = [];
foreach ($groups as $group) {
$group_members[$group] = [];
foreach ($data as $item) {
if (strpos(",{$item['group']},", ",{$group},") !== false) {
$group_members[$group][] = $item['name'];
}
}
}
var_dump($group_members);
у вас есть трудности с поиском решения, потому что у вас плохой дизайн базы данных. Никогда не храните разные значения в одной ячейке через запятую. используйте отдельные поля. В противном случае эта архитектура приведет вас ко многим подобным головным болям.