配列を考えると:
$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 ループの 2 回目の反復で、次のエラーが発生します。
重大度: 通知メッセージ: 未定義のプロパティ: Smarty_Variable::$step
重大度: 通知メッセージ: 未定義のプロパティ: Smarty_Variable::$total