我创建了一个多维数组,以便稍后从数据中创建一个commisioning列表。为此,我必须将条目加倍并相应地增加数量。 origin数组的结构如下:
Array
(
[0] => Array
(
[id] => 272050402526
[bezeichnung] => Tom Cococha Kokoskohle Coco Gold Shishakohle Naturkohle Shisha Kohle Würfel 1 Kg
[stueckzahl] => 1
)
[1] => Array
(
[id] => 281881151709
[bezeichnung] => Tom Cococha - Naturkohle Grün 1 kg
[stueckzahl] => 1
)
[2] => Array
(
[id] => 281653408911
[bezeichnung] => 50 actiTube SLIM Aktivkohlefilter Aktivkohle Filter Tune Kohle Slimfilter (7 mm)
[stueckzahl] => 1
)
[3] => Array
(
[id] => 281881151709
[bezeichnung] => Tom Cococha - Naturkohle Grün 1 kg
[stueckzahl] => 1
)
)
现在我想合并重复的条目并相应地合并数字。我的失败方法如下:
$secarr = array();
foreach ($arr as $key => $value) {
if($key == 0){
array_push($secarr, $value);
}else{
foreach ($secarr as $seckey => $secvalue) {
if(in_array($value['bezeichnung'], $secvalue) == TRUE){
$secarr[$seckey]['stueckzahl'] = $secvalue['stueckzahl'] + $value['stueckzahl'];
continue 2;
}else{
array_push($secarr, $value);
continue 2;
}
}
}
}
输出应如下所示:
Array
(
[0] => Array
(
[id] => 272050402526
[bezeichnung] => Tom Cococha Kokoskohle Coco Gold Shishakohle Naturkohle Shisha Kohle Würfel 1 Kg
[stueckzahl] => 1
)
[1] => Array
(
[id] => 281881151709
[bezeichnung] => Tom Cococha - Naturkohle Grün 1 kg
[stueckzahl] => 2
)
[2] => Array
(
[id] => 281653408911
[bezeichnung] => 50 actiTube SLIM Aktivkohlefilter Aktivkohle Filter Tune Kohle Slimfilter (7 mm)
[stueckzahl] => 1
)
)
有人可以帮助我吗?
祝你好运, 帕斯卡
答案 0 :(得分:1)
这样就可以了。
$output = [];
foreach ($input as $item) {
if (array_key_exists($item['id'], $output)) {
$output[$item['id']]['stueckzahl'] += $item['stueckzahl'];
} else {
$output[$item['id']] = $item;
}
}
print_r($output);
您可以在此处在线运行:http://sandbox.onlinephpfunctions.com/code/4cd9a253538931250867099305c9741c83c2e52f
编辑以回应杰夫的意见。他可能是对的;那更像是你所追求的。