按 属性 对 php 数组进行排序的最简单方法
easiest way to sort a php array by property
我尝试了这个post中的一些方法: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
我做错了什么?
您不能使用 <
和 >
comparison operators 比较字符串,它们是为 PHP 中的数字保留的。如果你这样做,你的字符串首先被透明地类型转换为数字,可能所有的计算结果都是 0
,因此看似随机的结果。
尝试使用 strcmp(),它比较字符串和 returns 数字,就像 usort()
期望的那样:
function personSort( $a, $b ) {
return strcmp($a->last_name, $b->last_name);
}
注意从PHP5.3开始,可以避免在全局范围内声明函数,而是使用匿名函数:
usort($autlist, function ($a, $b) {
return strcmp($a->last_name, $b->last_name);
});
我尝试了这个post中的一些方法: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
我做错了什么?
您不能使用 <
和 >
comparison operators 比较字符串,它们是为 PHP 中的数字保留的。如果你这样做,你的字符串首先被透明地类型转换为数字,可能所有的计算结果都是 0
,因此看似随机的结果。
尝试使用 strcmp(),它比较字符串和 returns 数字,就像 usort()
期望的那样:
function personSort( $a, $b ) {
return strcmp($a->last_name, $b->last_name);
}
注意从PHP5.3开始,可以避免在全局范围内声明函数,而是使用匿名函数:
usort($autlist, function ($a, $b) {
return strcmp($a->last_name, $b->last_name);
});