【发布时间】:2012-11-24 02:16:59
【问题描述】:
我有两种类型的数组字段,我想根据这些字段进行排序:
第一个是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] => 标准类对象 ( [id] => 121 [预注册日期] => 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
)
)
而我的 usort 函数是:
$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 的格式始终相同,并且两者不能在一个对象中。所以,这不需要验证。
提前致谢。
【问题讨论】:
-
您可以使用
property_exists()在尝试访问之前检查属性是否存在。
标签: php