给定数组:
$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
答案 0 :(得分:0)
我只是在将它传递给Smarty之前用PHP处理过它。