Рассмотрим элементы массива по одному - PullRequest
0 голосов
/ 22 октября 2018

Я использую webmerge для создания документов.

У меня есть правило, которое выглядит так (игнорируйте условное {$docType} для этого вопроса):

enter image description here

И я передаюДанные JSON, которые выглядят следующим образом:

{   
    "forms": [
        {
      "formID": 19,
      "formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
      "fillIns": {
        "retainedAmount": "2000000"
        }
      },
      {
      "formID": 20,
      "formUrl": "https://www.webmerge.me/merge/111111/a2X5yn",
      "fillIns": []
      }
   ]
 }

Это прекрасно работает и загружает каждую форму на основе URL, предоставленного по мере необходимости.

Однако, если у меня есть две идентичные формы с отличающимися fillIns, например:

{   
    "forms": [
        {
      "formID": 19,
      "formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
      "fillIns": {
        "retainedAmount": "1000000"
                }
        },
      {
      "formID": 19,
      "formUrl": "https://www.webmerge.me/merge/123456/y3wpgu",
      "fillIns": {
        "retainedAmount": "2000000"
        }
      }
   ]
 }

Он объединяет две формы, как и должно, но каждая форма имеет оба значения для retainedAmountна основе следующего сопоставления:

{foreach from=$forms item=_row}{if $_row.formID == 19}{if !empty($_row.fillIns.retainedAmount)}{$_row.fillIns.retainedAmount|number_format}{/if}{/if}{/foreach} 

Таким образом, окончательный результат для обеих форм будет выглядеть следующим образом:

Оставшаяся сумма : 10000002000000

В результате я хочу, чтобы первый экземпляр формы отображал

Оставшаяся сумма : 1000000

и второйотображает

Оставшаяся сумма : 2000000

Похоже, что поскольку отображение выполняется циклически по каждому элементу в массиве каждый раз, поэтому каждыйФорма добавляет оба значения.

Я играл с array_shift и array_pop, чтобы правило повторялось, но рассматривало только один элемент за раз, но я не могу заставить его работать правильно.

Я думаю, мне нужно поместить каждый элемент в переменную, а затем ссылаться на эту переменную на карте, но я не могу заставить ее работать.Я бы показал все свои попытки, но я думаю, что это будет просто уродливо.

Наконец, я никогда не узнаю, по какому индексу или сколько одинаковых форм появятся с разными fillIns, поэтому я не могу использовать ключ дляИди ко мне.

Поскольку я понимаю, что не у всех есть webmerge, конечный результат через печать будет примерно таким:

FormID = 19 |Retained Amount = 1000000
FormID = 19 |Retained Amount = 2000000
...