gpt4 book ai didi

php - 减少和合并数组

转载 作者:可可西里 更新时间:2023-11-01 08:39:43 26 4
gpt4 key购买 nike

我正在尝试创建一个简洁地为我提供以下内容的数组:

  • 组成部分的ID
  • 该组件的供应商 ID
  • 数量断点及其相关的单位成本

我使用的是 Laravel 5.2,尽管这是一个更一般的 PHP 问题。

所以,我有一个如下所示的数据库表:

sql screenshot

我有一个函数,如下所示,可以获取一些组件的价格:

    public function get_component_prices()
{
$components = DB::table('component_supplier')
->select('component_id', 'supplier_id', 'volume', 'unit_cost')
->get();

$prices = [];

foreach ($components as $component) {
array_push($prices, ["component_id" => $component->component_id, "supplier_id" => $component->supplier_id, "volumes" => [$component->volume => $component->unit_cost]]);
}

dd($prices);
}

这给了我数组:

    array:7 [▼
0 => array:3 [▼
"component_id" => 3
"supplier_id" => 1
"volumes" => array:1 [▼
100 => "1.5000"
]
]
1 => array:3 [▼
"component_id" => 3
"supplier_id" => 1
"volumes" => array:1 [▼
207 => "1.0100"
]
]
2 => array:3 [▼
"component_id" => 3
"supplier_id" => 1
"volumes" => array:1 [▼
500 => "0.8000"
]
]
3 => array:3 [▼
"component_id" => 3
"supplier_id" => 1
"volumes" => array:1 [▼
1000 => "0.4000"
]
]
4 => array:3 [▼
"component_id" => 3
"supplier_id" => 2
"volumes" => array:1 [▼
10000 => "0.2000"
]
]
5 => array:3 [▼
"component_id" => 4
"supplier_id" => 2
"volumes" => array:1 [▼
100 => "0.1000"
]
]
6 => array:3 [▼
"component_id" => 4
"supplier_id" => 2
"volumes" => array:1 [▼
500 => "0.0700"
]
]
]

您可以看到某些供应商和组件有多个数量。

因此,我想尝试更好地对数组进行分组,将重复的部分组合起来——也许像这样,例如:

6 => array:3 [▼
"component_id" => 4
"supplier_id" => 2
"volumes" => array:3 [▼
100 => "0.1000",
500 => "0.0700"
]
]

因此对于每个 component_id 和 supplier_id 组,都有一组“卷”。

非常感谢任何建议...我已经尝试了几个小时来对数组进行排序!

最佳答案

在Mysql中,你可以这样做

SELECT component_id, supplier_id,
GROUP_CONCAT(volume, ':', unit_cost) AS volumes
FROM component_supplier
GROUP BY CONCAT(component_id, supplier_id)

http://sqlfiddle.com/#!9/cb7bb/1

Output of the above query

然后您可以简单地在 PHP 中循环此查询并通过逗号分解卷字段。

关于php - 减少和合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38228126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com