Перебор массива при помощи Fenom

Приветствую!

Собственно вопрос следующего характера.
Есть такой массив, допустим, который при помощи обработки выдает это:
id: 1 - count: 2
id: 2 - count: 1
id: 2 - count: 7
Сообственно каждая строка это новый элемент массива. Распасиваю при помощи фенома:
{var $array_test = 'm_dish' | placeholder}

{foreach $array_test as $row}
    id: {$row.id} - count: {$row.count}
{/foreach}
Вопрос следующий. Можно ли как то при помощи Феном перебрать массив так, чтобы все элементы массива, которые имеют одинаковые ID складывали второе поле COUNT и убирали дублирующие записи по полю ID

Т.е. должно получиться из этого:
id: 1 - count: 2
id: 2 - count: 1
id: 2 - count: 7
Это:
id: 1 - count: 2
id: 2 - count: 8
Заранее спасибо за помощь!
Andrey
18 марта 2021, 19:09
modx.pro
787
0

Комментарии: 4

Артем
18 марта 2021, 22:23
+1
{set $result = []}
{foreach $array_test as $row}
  {if $row.id in keys $result}
    {$result[$row.id] += $row.count}
  {else}
    {$result[$row.id] = $row.count}
  {/if}
{/foreach}
    Andrey
    22 марта 2021, 20:07
    0
    Приветствую! Спасибо за ответ, складывает действительно, НО не исключает к сожалению по ID повторяющиеся элементы, т.е. получается вот так:
    id: 1 - count: 2
    id: 2 - count: 1
    id: 2 - count: 8
    получается предыдущая 2-ка никуда не делась!
      Артем
      22 марта 2021, 20:18
      +1
      НО не исключает к сожалению по ID
      Этот код и не должен что-то исключать. Результирующий массив лежит в переменной $result, в ней и нужно смотреть. $array_test уже не нужен.

      {foreach $result as $id => $value}
        id: {$id} - count: {$value}
      {/foreach}
      Andrey
      22 марта 2021, 20:14
      0
      в любом случае спасибо! Нашел другой вариант, не связанный с fenom :D
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4