簡體   English   中英

在Smarty模板中使用php函數

[英]Use php functions in Smarty template

如何在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}

您尚未說明要達到的結果,實際上您應該在控制器/模型中而不是在視圖中進行此類操作。

但是,如果在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] = Array('aa'=>'a','bb'=>'b')$ array [1] = Array('cc'=>'c','dd'=>'d ');

如果使用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的問題時,它都與問題無關

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM