MODX REVO Fenom, как в цикле исключить повторяющиеся элементы?

Подскажите как через Fenom исключить повторяющиеся элементы массива?
Есть список дат


2017
2018
2019
2019
2019

Как исключить повторные записи? Пробую через array_unique, но не получается с FENOM это подружить.

{set $input = json_decode(1 | resource : 'field-news', true)}
                    {$rows = array_unique($input)}
                    {foreach $rows as $idx => $row}
                      <option value="">{$row.date | date : "Y"}</option>
                    {/foreach}
Или придется писать сниппет отдельный?
Роман
29 декабря 2019, 15:20
modx.pro
626
0

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

Михаил
29 декабря 2019, 18:45
0
А в настрйках включен php для феном?
    Роман
    29 декабря 2019, 21:34
    0
    Да конечно, все включено, распечатывает вот так:
    Array
    2019
    Сам массив и одну итерацию.
      Yurij Finiv
      30 декабря 2019, 03:59
      0
      Я подозреваю что у вас массив в массиве проверьте var_dump($input)
        Роман
        30 декабря 2019, 11:25
        0
        field-news это tv поле MIGX, так понимаю да, это массив.
          Yurij Finiv
          30 декабря 2019, 23:54
          0
          MIGX это JSON. Сначала нужно смотреть какие данные на выходе тогда оперировать как нужно
            Роман
            31 декабря 2019, 00:11
            0
            Спасибо, решили задачку ниже.
    Баха Волков
    29 декабря 2019, 21:48
    0
    {set $rows = ...}
      Роман
      29 декабря 2019, 21:57
      0
      Спасибо, теперь не выводит Array, но все равно распечатывает одну итерацию:
      2019,
      Если убрать строку с array_unique то весь список с дублями такой.
      2017
      2018
      2019
      2019
      2019
      Почему только одну 2019 выводит? Если выводит уникальные записи, то должно быть так

      2017
      2018
      2019
        Юрий
        30 декабря 2019, 12:30
        0
        {set $arr[]}
        {foreach $rows as $idx => $row}
        	{if $row.date | in : $arr}{continue}{/if}
        	{set $arr[] = {$row.date}
        	<option value="">{$row.date | date : "Y"}</option>
        {/foreach}
          Роман
          30 декабря 2019, 12:40
          0
          Спасибо, но никак не хочет работать, белый лист вообще. Я так понимаю должно быть так

          {set $arr[]}
          {set $input = json_decode(1 | resource : 'field-news', true)}
          {foreach $rows as $idx => $row}
          	{if $row.date | in : $arr}{continue}{/if}
          	{set $arr[] = {$row.date}
          	<option value="">{$row.date | date : "Y"}</option>
          {/foreach}
            Юрий
            30 декабря 2019, 13:29
            0
            Поменяй на эту строку
            {set $arr[] = $row.date}
            Лишняя скобка
            {set $arr[]}
            {set $rows = json_decode(1 | resource : 'field-news', true)}
            {foreach $rows as $idx => $row}
            	{if $row.date | in : $arr}{continue}{/if}
            	{set $arr[] = $row.date}
            	<option value="">{$row.date | date : "Y"}</option>
            {/foreach}
              Роман
              30 декабря 2019, 13:41
              0
              Сделал так:
              {set $input = json_decode(1 | resource : 'field-news', true)}
              {foreach $rows as $idx => $row}
              	{if $row.date | in : $arr}{continue}{/if}
              	{set $arr[] = $row.date}
              	<option value="">{$row.date | date : "Y"}</option>
              {/foreach}
              Просто не распечатывает ничего, ошибка ушла, страница загрузилась.
                Юрий
                30 декабря 2019, 14:00
                1
                +1
                Сделай так
                {set $arr[]}
                {set $rows = json_decode(1 | resource : 'field-news', true)}
                {foreach $rows as $idx => $row}
                	{if $row.date | in : $arr}{continue}{/if}
                	{set $arr[] = $row.date}
                	<option value="">{$row.date | date : "Y"}</option>
                {/foreach}
                  Роман
                  30 декабря 2019, 14:07
                  0
                  БЛАГОДАРЮ! Заработало, но если убрать первую строку объявление массива {set $arr[]}
                  Из за нее белая страница, парсер почему то не работает с этим.
                  Сделал вот так, работает :) Надеюсь без объявление массива не повлияет на ошибки в логах.
                  {set $rows = json_decode(1 | resource : 'field-news', true)}
                  {foreach $rows as $idx => $row}
                  	{if $row.date | in : $arr}{continue}{/if}
                  	{set $arr[] = $row.date}
                  	{$row.date | date : "Y"}
                  {/foreach}
                    Роман
                    30 декабря 2019, 14:13
                    0
                    Вот так заменил эту строку,
                    {set $arr[]}
                    из за которой белая страница была, на эту
                    {set $arr = []}
                    вроде работает и парсеру нравится :)
                      Юрий
                      30 декабря 2019, 14:19
                      0
                      Ок, мой косяк
                        Роман
                        30 декабря 2019, 14:21
                        0
                        ВАМ СПАСИБО, это у меня пока мозгов не хватает. С наступающим!
                          Юрий
                          30 декабря 2019, 15:31
                          +1
                          Не за что.
                          Спасибо и Вас тоже с наступающим.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      18