0

配列を考えると:

$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

4

1 に答える 1

0

Smarty に渡す前に PHP で処理しました。

于 2012-10-02T09:08:39.297 に答える