将foreach()输出保存到数组(Smarty)中


Save foreach() output into array (Smarty)

如何将foreach输出保存到Smarty中的另一个数组并使用{foreach}之外的新数组?

的例子:

{foreach name=cats from=$category->subcategories item=n}
/*here would be something like $newArr = ($n->name,$n->url)*/
{/foreach}
<a href="$newarr->name">hi</a>

不太了解smarty,但在PHP中使用array_push函数是一种简单的方法。或者用[](其实是一样的):

$newArr = array();
foreach($oldArr as $oldArr) {
   $newArr[] = $n->name,$n->url;
   // EQUIVALENT TO
   array_push($oldArr, $n->name,$n->url);
}

您应该从代码后面完成。Smarty是用于View层的,这样的层不应该有可能对变量做一些事情而不是显示它。您可以将输出保存到php代码中的数组中,然后将其分配给视图。但如果你真的想在smarty中做你可以使用php标签 http://www.smarty.net/docsv2/en/language.function.php.tpl但我不建议这么做

还有一个有趣的标签

{附加}

{append}用于在模板执行期间创建或追加模板变量数组。

http://www.smarty.net/docs/en/language.function.append.tpl