Сгруппировать массив

323
16 октября 2017, 00:20

Есть массив такого вида

Array
(
[0] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 250
    )
[1] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 250
    )
[2] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 489
    )
[3] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 489
    )
[4] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 489
    )
[5] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 250
    )
[6] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 869
    )
[7] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 489
    )
[8] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 869
    )
[9] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 812
    )
[10] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 812
    )
[11] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 812
    )
[12] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 812
    )
[13] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 1505
    )
[14] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 1156
    )
[15] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 1156
    )
[16] => Array
    (
        [name] => Внуков Сергій Миколайович
        [sum] => 1505
    )

)

Как его преобразовать к такому виду использую php 5.3

Array(
[0] => Array
   (
       [name] => Внуков Сергій Миколайович
       [sum] => 13780 сумма общая   
   )
)
Answer 1

Можно циклом пройти по массиву, в первой итерации получить имя и начальную сумму, а во всех последующих - просто суммировать необходимые значения. После выхода из цикла изменить структуру результирующего массива, путём его перезаписи ранее полученными в цикле данными. На примере это выглядит так:

$result = array();
foreach ($array as $arr) {
    !empty($result['name']) ?: $result['name'] = $arr['name'];
    $result['sum'] += $arr['sum'];
}
$result = array($result);
echo '<pre>'; print_r($result); echo '</pre>';
READ ALSO
Перенос строки textarea

Перенос строки textarea

Проблема, в том, что при выводе текста в простой блок из БД, он отображается с переносами, как и задумано, а если вывести этот текст в textarea, то будет...

260
Сайт для фотоотчетов

Сайт для фотоотчетов

Как можно реализовать хранение и загрузку фотографий на сайт с возможностью скачиванияСайт делается на Drupal 8

209
проблема переноса сайта с Xampp на OpenServer

проблема переноса сайта с Xampp на OpenServer

Добрый день! Перенес сайт с xampp на openserver загрузилась только главная страница когда перехожу по ссылкам, то в строке написан верный путь также...

161