我尝试了这篇文章中的一些方法: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
我做错了什么?
答案 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);
});