我有两种类型的数组字段,我想根据这些字段进行排序:
第一个是registration_date,第二个是preregistration_date
这是 print_r 数组输出(存储在变量$unsorted_users中):
Array
(
[0] => stdClass Object
(
[id] => 120
[registration_date] => 2012-10-19 16:57:46
[username] => Jeff
)
[1] => stdClass Object
(
[id] => 121
[preregistration_date] => 2012-12-23 16:57:46
)
[2] => stdClass Object
(
[id] => 122
[registration_date] => 2012-11-30 16:57:46
[username] => Susan
)
)
我想通过registration_date和preregistration_date订购这个数组DESC ,所以它看起来像这样:
数组([0] => stdClass 对象([id] => 121 [preregistration_date] => 2012-12-23 16:57:46
)
[1] => stdClass Object
(
[id] => 122
[registration_date] => 2012-11-30 16:57:46
[username] => Susan
)
[2] => stdClass Object
(
[id] => 120
[registration_date] => 2012-10-19 16:57:46
[username] => Jeff
)
)
我的排序功能是:
$sorted_users = usort($unsorted_users, function($a, $b) {
return strcmp ($a->registration_date, $b->registration_date) ;
});
但是,它只是按registration_date排序,如果没有registration_date,例如:
[1] => stdClass Object
(
[id] => 121
[preregistration_date] => 2012-12-23 16:57:46
)
我得到一个错误。
如何调整我的功能,使其是 registration_date 或 preregistation_date 排序?
顺便提一句。registration_date 和 preregistration_date 的格式始终相同,并且两者不能在一个对象中。所以,这不需要验证。
提前致谢。