Доброго времени суток. Дабы не загружать Вас лишней информацией, вкратце и с примерами, опишу в чём проблема. Дело в том, что с базы данных MySQL я получаю некоторые данные. Проблема в том, что их нужно привести к определенному виду массива, а я даже не представляю как.
У нас есть таблица в базе данных и все ячейки, которые отвечают определенной группе. К примеру, группе с ID №1 должны быть помещены в один ассоциативный массив.
Пример этой таблички:
А вот и пример массива этого:
$data = array(
array(
'modname' => 'Lorem',
'pricing' => array(
'0' => 0.03,
'1' => 0.15,
'2' => 0.50
),
'names' => array(
'0' => 'Lorems +0.03',
'1' => 'Ipsum +0.15',
'2' => 'Dolor +0.50'
)
),
array(
'modname' => 'Ipsum',
'pricing' => array(
'0' => 0.08,
'1' => 0.20,
'2' => 0.60
),
'names' => array(
'0' => 'Sie +0.08',
'1' => 'A +0.20',
'2' => 'Mat +0.60'
)
)
);
Так вот, пока даже нет представления, как это можно реализовать в коде. Как так ячейки по определенному ID Group помещать в массив? Можно использовать if-else, но как проделать это всё в массиве?
Надеюсь на Вашу помощь.
UPD: Добавлю небольшой пример для лучшего понимания:
Представьте магазин, в нем есть товар - кровати.
Есть цена за кровать, но есть "модификаторы", которые влияют на цену. К примеру: размер кровати, цвет кровати, размещение дополнительных полочек. Вот суть в том, чтобы с БД как-то значения вытягивать и группировать по ID. Т.е. цвета к цветам, полочки к полочкам, размеры к размерам. И группировать всё это нужно именно в ассоциативном массиве, так как на примере.
Допустим исходные данные уже извлечены и находятся в массиве input:
$input = [
['id_group' => 1, 'name' => "Lorem", 'price' => 0.03],
['id_group' => 2, 'name' => "Sie", 'price' => 0.08],
['id_group' => 1, 'name' => "Ipsum", 'price' => 0.15],
['id_group' => 1, 'name' => "Dolor", 'price' => 0.50],
['id_group' => 2, 'name' => "A", 'price' => 0.20],
['id_group' => 2, 'name' => "Mat", 'price' => 0.60],
];
очевидно, что обрабатывать мы их будем в цикле. Каждый раз, когда мы встречаем новый id_group мы должны добавлять элемент в результирующий массив. При этом имя текущего элемента будет определять name группы.
После чего по номеру группы мы должны добавить элементы pricing и names.
$result = [];
foreach($input as $d){
$gId = $d['id_group'];
//новая группа
if(!isset($result[$gId])){
$result[$gId] = [
'modname' => $d['name'],
'pricing' => [],
'names' => [],
];
}
$result[$gId]['pricing'][] = $d['price'];
$result[$gId]['names'][] = sprintf("%s %+.2f", $d['name'], $d['price']);
}
Искомый результат вывода:
Array (
[1] => Array
(
[modname] => Lorem
[pricing] => Array
(
[0] => 0.03
[1] => 0.15
[2] => 0.5
)
[names] => Array
(
[0] => Lorem +0.03
[1] => Ipsum +0.15
[2] => Dolor +0.50
)
)
[2] => Array
(
[modname] => Sie
[pricing] => Array
(
[0] => 0.08
[1] => 0.2
[2] => 0.6
)
[names] => Array
(
[0] => Sie +0.08
[1] => A +0.20
[2] => Mat +0.60
)
)
)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости