我需要将数组合并成1个数组,但我需要的是删除它们共同的主要数据(我的意思是重复的值),我只需要合并时的唯一值。
public $arrayfields= [];
public $itemMap = [];
public function getRowMapping(array $row,$uniqueField,$moduleName)
{
$arrayData = [];
foreach ($this->columnMapping as $key => $value) {
$row = $this->moduleType($key,$value,$row,$moduleName);
}
$unique = $row[$uniqueField];
if(!isset($this->itemMap[$unique])){
$this->itemMap[$unique] = $row;
$this->itemMap[$unique][$unique]['items'] = [];
}
$this->itemMap[$unique]['items'][] = $row['items'];
return $row;
}
我对我的输入做了一点修改我该怎么做?所以现在输入将是这样的
Array
(
[bill_type] => 1
[bill_number] => BIL-003
[order_number] => ON-003
[items] => Array
(
[track_inventory] => 0
[sku1] => sku1
[name] => Kidswear1
)
)
Array
(
[bill_type] => 1
[bill_number] => BIL-003
[order_number] => ON-003
[items] => Array
(
[track_inventory] => 0
[sku1] => sku2
[name] => Pant
)
)
Array
(
[bill_type] => 1
[bill_number] => BIL-002
[order_number] => ON-002
[items] => Array
(
[track_inventory] => 0
[sku1] => sku3
[name] => Pants
)
)
我要的最终输出是
Array
(
[BIL-003] => Array
(
[bill_type] => 1
[order_number] => ON-003
[items] => Array
(
[0] => Array(
[track_inventory] => 0
[sku1] => sku1
[name] => Kidswear1
)
[1] => Array
(
[track_inventory] => 0
[sku1] => sku2
[name] => Pant
)
)
[BIL-002] => Array
(
[bill_type] => 1
[order_number] => ON-002
[items] => Array
(
[0] => Array(
[track_inventory] => 0
[sku1] => sku3
[name] => pants
)
)
)
4条答案
按热度按时间kpbpu0081#
我认为没有标准的库函数来实现这一点。
下面是实现这一点的函数:
7jmck4yq2#
这里是我的建议,如果输入是数组,检查我的回答在这篇文章中转换一个关联数组到一个关联数组,其中有一个键与另一个关联数组作为其值在php
否则检查以下代码。
bill_number
作为唯一键,运行foreach并追加items
数组元素。让我给予你一个例子我还没有测试这个代码,但我认为这将是一个你的问题。
92vpleto3#
结果:
ne5o7dgx4#
1.将输入数组聚集成一个数组,并使用单个循环迭代每个数组。
1.在将数据推送到结果数组中时分配临时键。
1.第一次遇到的
items
数据需要被推入更深的级别,以便所有被推入的items
数据被按需索引。代码:(Demo)