簡體   English   中英

如何在Smarty Foreach循環中調用函數?

[英]How to call the function inside the Smarty Foreach Loop?

我想在smarty模板的foreach循環內調用該函數,如果在smarty模板中眾所周知的函數及其功能,請在此方面幫助我解決此問題。

PHP中的示例:

<?php
function array_combine_($keys, $values)
{
    $result = array();
    foreach ($keys as $i => $k) {
        $result[$k][] = $values[$i];
    }
    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
    return $result;
}
$country = array("India","United States","United Kingdom","India","Australia");
$city    = array("Coimbatore","Newyork","London","Bangalore","Melborne");
$output  = array_combine_($country, $city);
$get_array_keys = array_keys($output);
$get_array_values = array_values($output);
$get_count = count(array_keys($output));
for($i=0;$i<$get_count;$i++){
    if(is_array($get_array_values[$i])){
        echo "<b>".$get_array_keys[$i]."</b>&nbsp;-&nbsp;".implode(",",$get_array_values[$i])."<br>";
    }
    else{
        echo "<b>".$get_array_keys[$i]."</b>&nbsp;-&nbsp;".$get_array_values[$i]."<br>";
    }
}
?>

輸出:

India - Coimbatore,Bangalore
United States - Newyork
United Kingdom - London
Australia - Melborne

Smarty中的示例:

{foreach from=$companies item=record key=key}
{$record.country}
{$record.city}
{/foreach}

現在如何將這個{$ record.country}和{$ record.city}值傳遞給array_combine _($ arg1,$ arg2); 在{foreach}循環中,如下所示:

{foreach from=$companies item=record key=key}
{$record.country}
{$record.city}
array_combine_({$record.country},{$record.city});
{/foreach}

提前致謝。

正如我告訴您的那樣,我不建議您這樣做。

如果您確定要在模板上做什么,則可以描述您的功能並使用它。 只要放上php標記,就不要解析它。

{php}
    function array_combine_(){
    }
{/php}
{foreach from=$companies item=record key=key}
    {$record.country}
    {$record.city}
    array_combine_({$record.country},{$record.city});
{/foreach}

只需從PHP端准備array_combine()結果,並將其傳遞給smarty即可顯示。 嘗試減少聰明的一面。

在smarty中,僅使用其可用的函數(例如大寫字母等)。不要嘗試在smarty中使用php函數。

暫無
暫無

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

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