【发布时间】:2014-03-15 11:09:12
【问题描述】:
我想按数组中的两个条件进行排序。 第一个标准是第二个类别和标题。
我尝试使用 usort() 但它不起作用。
有没有 php 函数可以做到这一点?
我原来的数组:
Array
(
[0] => stdClass Object
(
[id] => 1
[category] => cat1
[title] => title1
)
[1] => stdClass Object
(
[id] => 3
[category] => cat2
[title] => z
)
[2] => stdClass Object
(
[id] => 2
[category] => cat1
[title] => title2
)
[3] => stdClass Object
(
[id] => 4
[category] => cat2
[title] => a
)
)
我想要这个:
Array
(
[0] => stdClass Object
(
[id] => 1
[category] => cat1
[title] => title1
)
[1] => stdClass Object
(
[id] => 2
[category] => cat1
[title] => title2
)
[2] => stdClass Object
(
[id] => 4
[category] => cat2
[title] => a
)
[3] => stdClass Object
(
[id] => 3
[category] => cat2
[title] => z
)
)
谢谢。
我没有尝试太多,因为我找到了一个方法:
usort($object, 'sort');
function sort($a,$b){
if($a->category == $b->category){
if($a->title == $b->title){
return 0;
}else{
return ($a->title < $b->title) ? -1 : 1;
}
}else{
return ($a->category < $b->category) ? -1 : 1;
}
}
但它也适用于 multisort() :
foreach ($object as $sort_key => $sort_row) {
$category[$sort_key] = $sort_row->acls_category;
$title[$sort_key] = $sort_row->acls_title;
}
array_multisort($category, SORT_ASC, $title, SORT_ASC, $object);
【问题讨论】:
-
你和
usort()使用了什么比较函数?