一次考虑一个数组元素

时间:2018-10-22 16:07:01

标签: php arrays foreach smarty webmerge

我正在使用webmerge创建文档。

我有一个看起来像这样的规则(忽略此问题的import dask.dataframe as dd df = dd.read_csv(r'file.csv', delim_whitespace=True, parse_dates=['start_date', 'end_date']) df['days'] = (df['end_date'] - df['start_date']).dt.days print(df.compute()) start_date end_date days 0 2018-09-01 2018-10-01 30 1 2018-09-02 2018-09-22 20 条件):

enter image description here

然后我传递如下所示的JSON数据:

{$docType}

这很好用,并将根据需要提供的URL加载每个表单。

但是,如果我有两个相同的表单,但{ "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": [] } ] } 不同,如下所示:

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

所以两种形式的最终结果都将如下所示:

  

保留金额:10000002000000

我想要的结果是显示表单的第一个实例

  

保留金额:1000000

第二个显示

  

保留金额:2000000

看来,由于映射每次都循环遍历数组中的每个元素,因此每个表单都将两个值相加。

我一直在玩{foreach from=$forms item=_row}{if $_row.formID == 19}{if !empty($_row.fillIns.retainedAmount)}{$_row.fillIns.retainedAmount|number_format}{/if}{/if}{/foreach} array_shift,以便重复该规则,但一次只考虑一个元素,但是我似乎无法使其正常工作。

我认为我需要将每个元素都放入一个变量中,然后在映射中引用该变量,但是我似乎无法使其正常工作。我会展示我的所有尝试,但我认为这将是丑陋的。

最后,我永远也不会知道在哪个索引处显示多少个具有不同fillIns的相同表单,因此我也无法使用任何键来指导我。

由于我意识到并不是每个人都有webmerge,因此通过打印的最终结果将是这样的:

array_pop

0 个答案:

没有答案