如何在Smarty Template中使用PHP函数中的array_push。
我试过这个
{assign var='out' value=array()}
{foreach $data['data'] as $dataInfo}
{$out|@array_push {$dataInfo['a']}:{$dataInfo['b']}}
{/foreach}
{$out|var_dump}
答案 0 :(得分:6)
你还没有解释你想要达到的结果,事实上你应该在控制器/模型中做这些事情而不是在视野中。
但是如果在PHP中你有:
$smarty->assign(
'data',
array(
'data' => array(
array('a' => 'one', 'b' => 'two'),
array('a' => 'three', 'b' => 'four')
)
)
);
在Smarty文件中你有:
{assign var='out' value=array()}
{foreach $data['data'] as $dataInfo}
{append var='out' value=$dataInfo['a']}
{append var='out' value=$dataInfo['b']}
{/foreach}
{$out|var_dump}
输出将是:
array(4) { [0]=> string(3) "one" [1]=> string(3) "two" [2]=> string(5) "three" [3]=> string(4) "four" }
正如所料。
在这种情况下, array_push
不是最佳解决方案,因为它也会显示元素数量,因此使用:
{assign var='out' value=array()}
{foreach $data['data'] as $dataInfo}
{$out|array_push:$dataInfo['a']}<br />
{$out|array_push:$dataInfo['b']}<br />
{/foreach}
{$out|var_dump}
您还可以显示数字:
1
2
3
4
array(4) { [0]=> string(3) "one" [1]=> string(3) "two" [2]=> string(5) "three" [3]=> string(4) "four" }
根据评论编辑回复
我想这样显示:a:b,c:d这个元素是| $ array [0] =数组(&#39; aa&#39; =&gt;&#39; a&#39;,&#39; bb&#39; =&gt;&#39; b&#39;)$ array [1] =数组(&#39; cc&#39; =&gt;&#39; c&#39;,&#39; dd&#39; =&gt;&#39; d&#39;);
如果在PHP中你有:
$array = array();
$array[0] = Array('aa' => 'a', 'bb' => 'b');
$array[1] = Array('cc'=>'c', 'dd'=>'d');
$smarty->assign(
'data', $array
);
在Smarty你应该使用:
{foreach $data as $dataInfo}
{$dataInfo|implode:':'}{if not $dataInfo@last}, {/if}
{/foreach}
输出将是:
a:b, c:d
但是,无论如何你在Smarty模板中询问有关使用PHP函数array_push
的问题都没有关联