智能嵌套 foreach 循环的问题


issue with a smarty nested foreach loop

我声明的变量是一串HTML代码。我试图在"换行符"上爆炸,然后在"|"上爆炸结果。这是我正在使用的代码

{assign var="featuresdescarray" value="<br />"|explode:$product.featuresdesc}
{foreach from=$featuresdescarray key=k item=i}
    {assign var="featuresdescarrayexploded" value="|"|explode:$i}
    {foreach from=$featuresdescarrayexploded key=key item=item}
        {if $item eq "yes"}
            yes-textreplaced
        {elseif $item eq "no"}
            no-textreplaced
        {else}
            {$item}<br />
        {/if}
    {/foreach}
{/foreach}   

因此,通过嵌套的 foreach 的第一个时间按我的预期被替换。 在那之后,它似乎失败了if,elseif,并且每次都使用else。

如果我取出 if 语句并放入 {$key} : {$item}
行,看起来它应该可以工作。

不确定我错过了什么

好的,

我不确定为什么这有效,原始代码不起作用,但这是对任何尝试这样的事情的人有效的方法。

我去掉了是和否,用 1 和 0 代替了它

{assign var="featuresdescarray" value="<br />"|explode:$product.featuresdesc}
    {foreach from=$featuresdescarray key=k item=i}
        {if $i|strstr:"|"}
            {assign var="featuresdescarrayexploded" value="|"|explode:$i}
                {foreach from=$featuresdescarrayexploded key=key item=item}
                    {if $key eq 0 and $item eq 1}
                        <div class="productFeatureDescYes">{$featuresdescarrayexploded[1]}<br /></div>
                    {elseif $key eq 0 and $item eq 0}
                        <div class="productFeatureDescNo">{$featuresdescarrayexploded[1]}<br /></div>
                    {/if}
                {/foreach}
            {else}
                {$i}<br />
            {/if}
        {/foreach}

我添加了一个 if 语句来搜索变量$i以查找"|",如果它有一个,那么它就会被分解并包装在正确的div 中。 如果没有,它只是显示(稍后包装在div 中(。

我还在第二个 foreach 语句的 key[0] 部分上运行 if 语句。

我想自学编码的危险,有时只是反复试验,但我总是喜欢找出我做错了什么,而这次并非如此。

我不确定为什么 0 和 1 比"不"和"是"效果更好,所以如果有人能回答最初的问题,那就太好了。