按属性排序php数组的最简单方法

时间:2015-01-31 21:48:31

标签: php arrays wordpress sorting

我尝试了这篇文章中的一些方法:Sort array by object property in PHP?

但是我无法按照wordpress中人员数组的姓氏排序。

以下是我的工作:

<?php 
    function personSort( $a, $b ) {
        return $a->last_name == $b->last_name ? 0 : ( $a->last_name > $b->last_name ) ? 1 : -1;
    }

    usort( $autlist, 'personSort' );
    foreach($autlist as $al){ ?>
        <option value="<?php echo $al->ID; ?>"><?php echo $al->first_name.' '.$al->last_name; ?></option>

订单如下:

Nick Hammond
Peter Ruck
Nam Ol Lamon

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您无法使用<> comparison operators来比较字符串,它们是为PHP中的数字保留的。如果你这样做,你的字符串首先透明地类型化为数字,可能全部评估为0,因此看似随机的结果。

尝试使用strcmp(),它会比较字符串并返回一个数字,就像usort()期望的那样:

function personSort( $a, $b ) {
    return strcmp($a->last_name, $b->last_name);
}

请注意,从PHP 5.3开始,您可以避免在全局范围内声明函数,而是使用匿名函数:

usort($autlist, function ($a, $b) {
    return strcmp($a->last_name, $b->last_name);
});