0

動的インクリメント変数を実装する方法について疑問に思っています。これは私のphpです

<?php 

$sections =5;

for($g=1; $g<=$sections; $g++){
$smarty->assign(array(
        'products-'.$g => $dbvariable,
        'add_display-'.$g => $othervar ));
}

$smarty->assign('number', $sections);
?>

これは私の賢いテンプレートです

{assign var=cnt value=1}
{while $cnt <= $number}
{foreach from=$products-`.$cnt` item=prod name=mysection}
<div class="section-{$cnt}">
// my output here
 <h3>{$products-`$cnt`.name}</h3>
  <img src="{$add_display-`$cnt`.src}">
</div>
{/foreach}
{assign var=cnt value=$cnt+1}
{/while}

smartyでインクリメント動的変数を実装する方法を教えてもらえますか?

私はここで迷っているようです

4

1 に答える 1

1

あなたが始めたアプローチに理由があるかどうかはわかりませんが、これはコメントよりも答えとして読みやすいでしょう.

動的な変数名ではなく、配列を使用しないのはなぜですか? これはあなたが望むものと同等でなければなりません、私は思います:

<?php 

$sections =5;

$products = array();
$add_display = array();
for($g=1; $g<=$sections; $g++){
    $products[$g] = $dbvariable;
    $add_display[$g] = $othervar;
}

$smarty->assign('products', $products);
$smarty->assign('add_display', $add_display);
$smarty->assign('number', $sections);

次に (これはおそらくさらに単純化できますが、変更内容を確認できるように、できるだけあなたのものに似たままにしています):

{assign var=cnt value=1}
{while $cnt <= $number}
    {foreach from=$products[$cnt] item=prod name=mysection}
    <div class="section-{$cnt}">
        // my output here
        <h3>{$prod.name}</h3>
        <img src="{$add_display[$cnt].src}">
    </div>
    {/foreach}
{assign var=cnt value=$cnt+1}
{/while}

ちなみに、それ<h3>はあまり正しくないように見えたので、どうあるべきかを推測しました。

于 2013-04-10T22:59:08.200 に答える