Smarty排序数组与usort

时间:2014-04-02 21:05:58

标签: arrays sorting smarty usort

我使用以下方法在模板中创建数组:

{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 
)

任何人都可以帮我实现排序输出吗?

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

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

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