【问题标题】:Smarty sort array with usort使用 usort 的 Smarty 排序数组
【发布时间】:2014-04-02 21:05:57
【问题描述】:

我正在使用以下模板在模板中创建一个数组:

{foreach from=$items item=node} 
{if $node->fielddefs.location01.value != ''}{$locations[] = $node->fielddefs.location01.value}{/if} 
{if $node->fielddefs.location02.value != ''}{$locations[] = $node->fielddefs.location02.value}{/if} 
{if $node->fielddefs.location02.value != ''}{$locations[] = $node->fielddefs.location03.value}{/if} 
{/foreach}

我需要按字母顺序对数组进行排序。我尝试了以下 usort 功能:

if (!function_exists('do_sort')) { 
    function do_sort($a, $b) { 
        return $a > $b; 
    } 
} 
$data = $params['data']; 
usort($data, 'do_sort'); 
$smarty->assign('sorted', $data);

它现在可以工作了,因为我猜我的数组不正确?我的数组如下所示:

Array 
( 
    [0] => Any 
    [1] => Chamonix 
    [2] => Courmayeur 
    [3] => Verbier 
    [4] => Zermatt 
    [5] => Verbier 
    [6] => Chamonix 
)

谁能帮我实现排序输出?

谢谢

【问题讨论】:

    标签: arrays sorting smarty usort


    【解决方案1】:

    试试这个:

    function do_sort($a, $b) { 
        return $a < $b ? -1 : 1; 
    }
    

    usort 函数中的回调应返回 -1、0 或 1(或更一般地,正数、负数或零),而不是 true/false。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多