smarty php中的Foreach语句

smarty php中的Foreach语句,php,laravel,smarty,Php,Laravel,Smarty,我有以下资料: {foreach key=num item=invoice from=$invoices} <tr> <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}">#{$invoice.invoicenum}</a></td> <td>{$invoic

我有以下资料:

    {foreach key=num item=invoice from=$invoices}
    <tr>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}">#{$invoice.invoicenum}</a></td>
        <td>{$invoice.datecreated}</td>
        <td>{$invoice.datedue}</td>
        <td data-order="{$invoice.totalnum}">{$invoice.total}</td>
        <td class="text-center">{include file="$template/includes/status-pages/status-faturas.tpl"}</td>
        <td class="text-center">
            {if $invoice.rawstatus eq 'paid'}
                {foreach from=$nfseData item=items}
                    {if $items.title|substr:16:4 eq $invoice.id && in_array($items.status, ['Answered', 'Closed'])}
                            <a href="{$WEB_ROOT}/dl.php?type=a&id={$items.id}&i=0" class="btn-sm rounded p-2 btn-success has-ripple"><i class="feather mr-1 icon-download"></i> Download NFS-e</a>
                        {elseif !in_array($items.status, ['Answered', 'Closed'])}
                            <a href="#!" class="btn-sm rounded p-2 btn-secondary has-ripple disabled"><i class="feather icon-refresh-cw mr-1"></i> Em processamento</a>
                            
                        {else}
                            <a href="{$WEB_ROOT}/submitticket.php?step=2&deptid=27&subject=NFS-e%20|%20Fatura%20#xxx%20|%20Valor%20R$xxxx" class="btn-sm rounded p-2 btn-primary has-ripple"><i class="feather icon-layout mr-1"></i> Solicitar NFS-e</a>
                        {/if}
                {/foreach}
            {else}
                <strong>N/D</strong>
            {/if}
        </td>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}" class="btn-sm rounded p-2 btn-info has-ripple"><i class="feather mr-1 icon-eye"></i> Ver fatura</a></td>
    </tr>
{/foreach}
数组用于:
$NFA

Array (2)
0 => Array (27)
  id => 6446
  title => "NFS-e | Fatura #1020 | Valor R$59,90"
1 => Array (27)
  id => 6445
  title => "NFS-e | Fatura #1030 | Valor R$39,90"
问题是
from=$nfa
的返回有多条记录,在这种情况下,它复制行而不遵循以下规则:
{if$items.title | substr:16:4 eq$invoice.id}

我需要它只返回对于这个规则为正的那些值,也就是说,具有相同的数字


是否有可能将此规则直接放在
foreach
中,以便它只返回遵守规则的行?或者有其他方法吗?

您正在循环每个发票的所有项目。您正在向他们显示它们是否属于该
发票
。您可以将
状态
过滤器嵌套在
if
中,该过滤器检查
发票id
,如果不匹配则不显示

{foreach key=num item=invoice from=$invoices}
    <tr>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}">#{$invoice.invoicenum}</a></td>
        <td>{$invoice.datecreated}</td>
        <td>{$invoice.datedue}</td>
        <td data-order="{$invoice.totalnum}">{$invoice.total}</td>
        <td class="text-center">{include file="$template/includes/status-pages/status-faturas.tpl"}</td>
        <td class="text-center">
            {if $invoice.rawstatus eq 'paid'}
                {foreach from=$nfseData item=items}
                    {if $items.title|substr:16:4 eq $invoice.id}
                        {if in_array($items.status, ['Answered', 'Closed'])}
                            <a href="{$WEB_ROOT}/dl.php?type=a&id={$items.id}&i=0" class="btn-sm rounded p-2 btn-success has-ripple"><i class="feather mr-1 icon-download"></i> Download NFS-e</a>
                        {elseif $items.status eq 'Open'}
                            <a href="#!" class="btn-sm rounded p-2 btn-secondary has-ripple disabled"><i class="feather icon-refresh-cw mr-1"></i> Em processamento</a>
                            
                        {else}
                            <a href="{$WEB_ROOT}/submitticket.php?step=2&deptid=27&subject=NFS-e%20|%20Fatura%20#xxx%20|%20Valor%20R$xxxx" class="btn-sm rounded p-2 btn-primary has-ripple"><i class="feather icon-layout mr-1"></i> Solicitar NFS-e</a>
                        {/if}
                    {/if}
                {/foreach}
            {else}
                <strong>N/D</strong>
            {/if}
        </td>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}" class="btn-sm rounded p-2 btn-info has-ripple"><i class="feather mr-1 icon-eye"></i> Ver fatura</a></td>
    </tr>
{/foreach}
{foreach key=num item=invoice from=$invoices}
{$invoice.datecreated}
{$invoice.datedue}
{$invoice.total}
{include file=“$template/includes/status pages/status faturas.tpl”}
{如果$invoice.rawEQ状态为“已支付”}
{foreach from=$nfa item=items}
{if$items.title | substr:16:4 eq$invoice.id}
{如果在数组($items.status,['responsed','Closed'])中}
{elseif$items.status eq'Open'}
{else}
{/if}
{/if}
{/foreach}
{else}
N/D
{/if}
{/foreach}

你能添加一些样本数据和预期结果吗,因为我不太清楚你的意思。@r\u a\u如果这真的让人困惑,我不知道如何最好地解释它。我需要的是,按照初始规则,在第一个
if
中只返回一个结果,在第二个
if
中只返回一个结果。简而言之,我需要它在每个div中只返回一个值。@r\u a\f我更新了我的问题。请为
$invoices
$nfa
@JitendraYadav添加示例数据。好的,我更新了问题,请验证。
Array (4)
0 => Array (13)
  id => 1020
  rawstatus => "paid"
1 => Array (13)
  id => 1030
  rawstatus => "unpaid"
Array (2)
0 => Array (27)
  id => 6446
  title => "NFS-e | Fatura #1020 | Valor R$59,90"
1 => Array (27)
  id => 6445
  title => "NFS-e | Fatura #1030 | Valor R$39,90"
{foreach key=num item=invoice from=$invoices}
    <tr>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}">#{$invoice.invoicenum}</a></td>
        <td>{$invoice.datecreated}</td>
        <td>{$invoice.datedue}</td>
        <td data-order="{$invoice.totalnum}">{$invoice.total}</td>
        <td class="text-center">{include file="$template/includes/status-pages/status-faturas.tpl"}</td>
        <td class="text-center">
            {if $invoice.rawstatus eq 'paid'}
                {foreach from=$nfseData item=items}
                    {if $items.title|substr:16:4 eq $invoice.id}
                        {if in_array($items.status, ['Answered', 'Closed'])}
                            <a href="{$WEB_ROOT}/dl.php?type=a&id={$items.id}&i=0" class="btn-sm rounded p-2 btn-success has-ripple"><i class="feather mr-1 icon-download"></i> Download NFS-e</a>
                        {elseif $items.status eq 'Open'}
                            <a href="#!" class="btn-sm rounded p-2 btn-secondary has-ripple disabled"><i class="feather icon-refresh-cw mr-1"></i> Em processamento</a>
                            
                        {else}
                            <a href="{$WEB_ROOT}/submitticket.php?step=2&deptid=27&subject=NFS-e%20|%20Fatura%20#xxx%20|%20Valor%20R$xxxx" class="btn-sm rounded p-2 btn-primary has-ripple"><i class="feather icon-layout mr-1"></i> Solicitar NFS-e</a>
                        {/if}
                    {/if}
                {/foreach}
            {else}
                <strong>N/D</strong>
            {/if}
        </td>
        <td class="text-center"><a href="viewinvoice.php?id={$invoice.id}" class="btn-sm rounded p-2 btn-info has-ripple"><i class="feather mr-1 icon-eye"></i> Ver fatura</a></td>
    </tr>
{/foreach}