Как суммировать значение ассоциативного массива на 3 равных ключевых значениях

0

Я должен присоединиться к массиву массива с одинаковым идентификатором, размером и типом и суммировать значение ключа num в php. Я нашел решения только для одного ключа, но мне нужно совпадение в 3 ключах

Array
(
    [3] => Array
        (
            [id] => 460
            [size] => 24
            [num] => 1
            [price] => 6800.00
            [type] => 1
        )

    [2] => Array
        (
            [id] => 460
            [size] => 24
            [num] => 1
            [price] => 6800.00
            [type] => 1
        )

    [1] => Array
        (
            [id] => 460
            [size] => 24
            [num] => 1
            [price] => 6800.00
            [type] => 2
        )

)

Мне нужно получить массив, как показано ниже, где каждый из них остается прежним, и просто числовое число суммируется, когда значения идентификатора, типа и размера одинаковы

Массив (

    [2] => Array
        (
            [id] => 460
            [size] => 24
            [num] => 2
            [price] => 6800.00
            [type] => 1
        )

    [1] => Array
        (
            [id] => 460
            [size] => 24
            [num] => 1
            [price] => 6800.00
            [type] => 2
        )

)
  • 0
    возможно дублирование суммы столбцов в многомерном массиве без циклов - просто измените функцию обратного вызова, чтобы проверить соответствие трех свойств
  • 0
    Так в чем именно проблема? Если вы знаете, как сделать это для одного, то вы запустите его для 3-х кортежей.
Показать ещё 2 комментария
Теги:
arrays

1 ответ

0
Лучший ответ

Я решил очень просто, используя временный массив, как в этом примере

    $newArr = array();
foreach($your_arr as $key=>$val){
    $index = $val['context'].$val[1];
    if(isset($newArr[$index])){
        $val_0 = $newArr[$val['context'].$val[1]][0] + $val[0];
        $newArr[$val['context'].$val[1]] = array($val_0, $val[1], 'context'=>$val['context']);
    }else{
        $newArr[$val['context'].$val[1]] = $val;
    }
}
$result = array_values($newArr);
print '<pre>';
print_r($result);
print '</pre>';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню