我使用array_merge组合了两个数组,现在需要按字母顺序对它们进行排序。问题是我需要比较两个不同的键,
e.g。
[0] => stdClass Object
(
[id] => 16
[title] => Oranges
)
[1] => stdClass Object
(
[id] => 23
[title] => Apples
)
[2] => stdClass Object
(
[id] => 16
[name] => Bananas
)
我需要将'name'属性相互比较,以及'title'属性,然后按字母顺序排序,(忽略id),以便我的结果是:
苹果
香蕉
桔子
然而,我在这里的功能:
function compareItems($a, $b)
{
if ( $a->title < $b->title ) return -1;
if ( $a->title > $b->title ) return 1;
if ( $a->name < $b->name ) return -1;
if ( $a->name > $b->name ) return 1;
return 0;
}
usort($array, "compareItems");
...没有合并,但是对一组属性(标题)进行排序,然后对另一组(名称)进行排序,从而给我:
苹果
橙子
香蕉
我希望我可以修改这个函数将两者合并在一起 - 我不是一个真正的PHP程序员,所以非常感谢任何帮助!
提前致谢。
答案 0 :(得分:3)
我下面的比较功能应该适合你:
function compareItems($a, $b)
{
$x = isset($a->title) ? $a->title : $a->name;
$y = isset($b->title) ? $b->title : $b->name;
return strcmp($x, $y);
}