如果任何公司的产品相同,我必须合并或内插子数组值。
预期输出应为:
0 =>
array (
'company' => '1,6'
'product' => 5,
),
我的数组是:
array (
0 =>
array (
'company' => 1,
'product' => 5,
),
1 =>
array (
'company' => 2,
'product' => 4,
),
2 =>
array (
'company' => 6,
'product' => 5,
),
3 =>
array (
'company' => 2,
'product' => 3,
),
)
我的代码是:
foreach($prSuppliers as $key=>$val){
if($prSuppliers[$key]['company_master_id']==$val['company_master_id']){
$contactemaileach = $val['company_master_id'];
$imp = implode(',', $contactemaileach);
}
}
答案 0 :(得分:0)
implode()
不会成为简单/直接解决方案的一部分。您应该使用产品值分配临时键,以便在每次迭代期间确定要处理的是第一次出现(存储整个子数组)还是后续出现的产品(使用/附加/连接新公司值)逗号)。
完成迭代后,用array_values()
重新索引数组。
代码:Demo
$array = array (
0 =>
array (
'company' => 1,
'product' => 5,
),
1 =>
array (
'company' => 2,
'product' => 4,
),
2 =>
array (
'company' => 6,
'product' => 5,
),
3 =>
array (
'company' => 2,
'product' => 3,
),
);
foreach ($array as $set) {
if (!isset($result[$set['product']])) {
$result[$set['product']] = $set;
} else {
$result[$set['product']]['company'] .= ",{$set['company']}";
}
}
var_export(array_values($result));
输出:
array (
0 =>
array (
'company' => '1,6',
'product' => 5,
),
1 =>
array (
'company' => 2,
'product' => 4,
),
2 =>
array (
'company' => 2,
'product' => 3,
),
)