php - 如果特定键匹配,则使用相同键对数组值进行分组
问题描述
我有这个数组数组:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[rawMaterialName] => Item1
[rawMaterialQuantity] => 560
[rawMaterialPrice] => 1250.00
[rawMaterialDate] => 2020-05-03
[rawMaterialDocument] => AA-00000001
)
[1] => Array
(
[id] => 2
[rawMaterialName] => Item2
[rawMaterialQuantity] => 19
[rawMaterialPrice] => 250.00
[rawMaterialDate] => 2020-05-04
[rawMaterialDocument] => AA-00000002
)
[2] => Array
(
[id] => 3
[rawMaterialName] => Item3
[rawMaterialQuantity] => 260
[rawMaterialPrice] => 870.00
[rawMaterialDate] => 2020-05-05
[rawMaterialDocument] => AA-00000003
)
[3] => Array
(
[id] => 4
[rawMaterialName] => Item2
[rawMaterialQuantity] => 43
[rawMaterialPrice] => 480.00
[rawMaterialDate] => 2020-05-06
[rawMaterialDocument] => AA-00000004
)
[4] => Array
(
[id] => 5
[rawMaterialName] => Item3
[rawMaterialQuantity] => 310
[rawMaterialPrice] => 5100.00
[rawMaterialDate] => 2020-05-07
[rawMaterialDocument] => AA-00000005
)
[5] => Array
(
[id] => 6
[rawMaterialName] => Item1
[rawMaterialQuantity] => 14
[rawMaterialPrice] => 830.00
[rawMaterialDate] => 2020-05-08
[rawMaterialDocument] => AA-00000006
)
)
)
rawMaterialName
如果键值匹配,我需要使用相同的键对值进行分组。希望得到这样的结果:
Array
(
[0] => Array
(
[0] => Array
(
[id] => Array
(
[0] => 1
[1] => 6
)
[rawMaterialName] => Item1
[rawMaterialQuantity] => Array
(
[0] => 560
[1] => 14
)
[rawMaterialPrice] => Array
(
[0] => 1250.00
[1] => 830.00
[rawMaterialDate] => Array
(
[0] => 2020-05-03
[1] => 2020-05-08
[rawMaterialDocument] => Array
(
[0] => AA-00000001
[1] => AA-00000006
)
[1] => Array
(
[id] => Array
(
[0] => 2
[1] => 4
)
[rawMaterialName] => Item2
[rawMaterialQuantity] => Array
(
[0] => 19
[1] => 43
)
[rawMaterialPrice] => Array
(
[0] => 250.00
[1] => 480.00
)
[rawMaterialDate] => Array
(
[0] => 2020-05-04
[1] => 2020-05-06
[rawMaterialDocument] => Array
(
[0] => AA-00000002
[1] => AA-00000004
)
)
[2] => Array
(
[id] => Array
(
[0] => 3
[1] => 5
)
[rawMaterialName] => Item3
[rawMaterialQuantity] => Array
(
[0] => 260
[1] => 310
)
[rawMaterialPrice] => Array
(
[0] => 870.00
[1] => 5100.00
)
[rawMaterialDate] => Array
(
[0] => 2020-05-05
[1] => 2020-05-07
)
[rawMaterialDocument] => Array
(
[0] => AA-00000003
[1] => AA-00000005
)
)
)
)
我不知道如何得到这个结果。有什么想法吗?
解决方案
我通过这种方式解决了:
$newArray = array();
foreach ($data as $element) {
$newArray[$element['rawMaterialName']]['rawMaterialName'] = $element['rawMaterialName'];
$newArray[$element['rawMaterialName']]['id'][] = $element['id'];
$newArray[$element['rawMaterialName']]['rawMaterialQuantity'][] = $element['rawMaterialQuantity'];
$newArray[$element['rawMaterialName']]['rawMaterialPrice'][] = $element['rawMaterialPrice'];
$newArray[$element['rawMaterialName']]['rawMaterialDate'][] = $element['rawMaterialDate'];
$newArray[$element['rawMaterialName']]['rawMaterialDocument'][] = $element['rawMaterialDocument'];
}
$finalArray = array_values($newArray);
推荐阅读
- amazon-web-services - 如何将标签附加到 AWS 分支
- firebase - 使用 Firebase SDK 对我的 React 应用程序进行 Google 分析
- python - Selenium Web-Driver 找不到元素(Selenium IDE 确实找到了它)
- ruby-on-rails - “.js 不存在于资产管道中”
- php - CakePHP - 使用保存关联保存到两个以上的模型
- java - 在java中,提供参数以扩展参数化接口的接口是它的同义词吗?
- spring - Spring boot Rest 创建一个可以引用另一个类别的类别或不
- c# - 我对订阅重复购买问题有疑问
- c++ - c ++模板化类,带有指向可变函数的函数指针
- c# - 如何将数组传递给 OracleParameter for IN 条件?