在Smarty中循环的逻辑错误?

时间:2012-09-29 15:48:19

标签: php smarty

给定数组:

$fruits = array(
    array(
        'color' => 'red',
        'name' => 'apple'
    ),
    array(
        'color' => 'red',
        'name' => 'cherry'
    ),
    array(
        'color' => 'yellow',
        'name' => 'banana'
    )
);

我试图在Smarty中显示它,看起来像这样:

red
 1. apple
 2. cherry

yellow
 1. banana

我的代码:

{foreach from=$fruits item=fruit}
    {assign var="current_color" value=$fruit.color}
    <h1>{$current_color}</h1>
        <ol>
            {while $current_color === $fruit.color}
                <li>{$fruit.name}</li>
                {assign var="fruit" value=$fruits|next}
            {/while}
        </ol>
{/foreach}

我的错误结果:

red
 1. apple
 2. cherry

red
 1. cherry

yellow
 1. banana

任何想法我的代码有什么问题?当我在while循环中推进数组指针时,它是否会影响foreach循环中的数组?

更新1:

尝试使用for循环:

{for $iteration=0 to $fruits|count - 1}
    {assign var="current_color" value=$fruits.{$iteration}.color}
    <h1>{$current_color}</h1>
        <ol>
            {while $current_color === $fruits.{$iteration}.color}
                <li>{$fruits.{$iteration}.name}</li>
                {assign var="iteration" value=$iteration + 1}
            {/while}
            {assign var="iteration" value=$iteration - 1}
        </ol>
{/for}

在for循环的第二次迭代中,我收到以下错误:

  

严重性:通知消息:未定义属性:Smarty_Variable :: $ step

     

严重性:通知消息:未定义属性:Smarty_Variable :: $ total

1 个答案:

答案 0 :(得分:0)

我只是在将它传递给Smarty之前用PHP处理过它。