smarty中的动态变量数组名


dynamic variable array name in smarty

我想知道如何实现一个动态增量变量,这是我的php

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

这是我的smarty模板

{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上实现增量动态变量?

我好像迷路了

我不确定您开始的方法是否有原因,但这将更容易被视为回答而不是评论。

为什么不直接使用数组而不是动态变量名呢?这应该等于你想要的,我认为:

<?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>看起来不太对,所以我已经猜到了它应该是什么。