如何将数据库表中的行转换为多维分层 struct 以计算唯一库存项目?
我的数据库如下所示:
CREATE TABLE stock (
model VARCHAR(100),
storage VARCHAR(100),
color VARCHAR(100)
);
INSERT INTO stock VALUES
('iPhone 14 Pro', '128gb', 'Black'),
('iPhone 14 Pro', '256gb', 'Red'),
('iPhone 14 Pro', '128gb', 'Black'),
('iPhone 14 Pro', '256gb', 'Black'),
('iPhone 14 Pro', '256gb', 'Red'),
('iPhone 14 Pro', '128gb', 'White'),
('iPhone 13 Pro', '128gb', 'Black'),
('iPhone 14 Pro', '256gb', 'Red');
因此,我的查询结果集如下所示:
[
['model' => 'iPhone 14 Pro', 'storage' => '128gb', 'color' => 'Black'],
['model' => 'iPhone 14 Pro', 'storage' => '256gb', 'color' => 'Red'],
['model' => 'iPhone 14 Pro', 'storage' => '128gb', 'color' => 'Black'],
['model' => 'iPhone 14 Pro', 'storage' => '256gb', 'color' => 'Black'],
['model' => 'iPhone 14 Pro', 'storage' => '256gb', 'color' => 'Red'],
['model' => 'iPhone 14 Pro', 'storage' => '128gb', 'color' => 'White'],
['model' => 'iPhone 13 Pro', 'storage' => '128gb', 'color' => 'Black'],
['model' => 'iPhone 14 Pro', 'storage' => '256gb', 'color' => 'Red']
]
我想从model
、storage
和color
值创建一个父子 struct 化数组,其中最低级别包含具有该特定值组合的项目总数.
[
'iPhone 14 Pro' => [
'128gb' => [
'Black' => 2,
'White' => 1,
],
'256gb' => [
'Red' => 3,
'Black' => 1,
],
],
'iPhone 13 Pro' => [
'128gb' => [
'Black' => 1,
],
],
]
我try 使用带有太多foreach
条语句的嵌套循环,但根本不起作用.
我想我错误地使用了array_push()
方法,因为我从来没有得到正确的结果