Объединяйте одинаковые предметы и добавляйте их количество

Мне нужна помощь. Как кодировать это в PHP? Если я использую метод формы для ввода № элемента и количества

form method="post"<br />
input type="number" name="item1" | input type="number" name="quantity1"<br />
input type="number" name="item2" | input type="number" name="quantity2"<br />
input type="number" name="item3" | input type="number" name="quantity3"<br />

Итак, если я поставлю тот же элемент #, то количество добавит свои значения. Заранее спасибо.


Ввод: (метод формы)
Пункт №: Количество:
111 2
222 5
111 6
Выход:
Пункт №: Количество:
111 8
222 5

1 ответ

Решение
function group_items($string=""){
    if(!$string){return;}
    $grouped=array();
    preg_match_all('/([0-9\.]+(?: [0-9\.]+)?)/',$string,$matches);
    $string='';
    $matches = isset($matches[0])?$matches[0]:array();
    foreach($matches as $match){
        $exp = explode(' ',$match);
        if(!isset($grouped[$exp[0]])){
            $grouped[$exp[0]] = $exp[1];
        }else{
            $grouped[$exp[0]] += $exp[1];
        }
    }
    foreach($grouped as $key => $group){
        $string.=$key." ".$group." ";
    }
    return trim($string);
}   

позвонив по:

echo group_items("111 2 222 5 111 6");

выход:

 111 8 222 5
Другие вопросы по тегам