如何根据对象属性对2D对象数组进行排序

时间:2019-11-28 17:04:59

标签: php arrays

我有一个2D数组

$myArray = [
    0=>$Object,
    1=>$Object,
    2=>$Object,
    3=>$Object,
//etc...
]

每个对象都有属性,例如其中一些具有相同的名称。我如何才能对数组进行排序,以使具有相同名称的对象彼此跟随,并且仅当没有其他具有相同名称属性的对象时,才转到下一个名称?

$myArray = [
//Objects with the first name
    0=>$Object,
    1=>$Object,
    2=>$Object,
//Objects with the second name
    3=>$Object,
    4=>$Object,
//Objects with the third name
    5=>$Object,
// etc.
]

该数组是从数据库生成的,因此它将永远不会具有相同的大小,并且带有名称的对象数可以是一个或多个。

1 个答案:

答案 0 :(得分:1)

您可以将usort()anonymous function结合使用,如下所示:

usort($dataArray, function($a, $b) {return strcmp($a->name, $b->name);});

或者这个:

function cmp($a, $b) {
    return strcmp($a->name, $b->name);
}

usort($dataArray, "cmp");

这将对属性为name的数据对象及其值进行排序。

Demo