按基于另一个Array的值对Array进行排序

时间:2014-09-18 22:48:41

标签: php arrays sorting

我该怎么做:

Array
(
    [0] => stdClass Object
        (
            [id] => 123
            [name] => Board
        )
    [1] => stdClass Object
        (
            [id] => 133
            [name] => Staff
        )
)

分为:

Array
(
    [0] => stdClass Object
        (
            [id] => 133
            [name] => Staff            
        )
    [1] => stdClass Object
        (
            [id] => 123
            [name] => Board  
        )
)

基于此:

Array( 'Staff', 'Board'  )

换句话说 - 根据值数组排序对象数组...

1 个答案:

答案 0 :(得分:2)

$ordering = ['Staff', 'Board'];
usort($myObjects, function($a, $b) use ($ordering) {
    $idx1 = array_search($a->name, $ordering);
    $idx2 = array_search($b->name, $ordering);
    if($idx1 == $idx2)
        return 0;
    elseif($idx1 < $idx2)
        return -1;
    return 1;
});

此示例确实假设$ordering将包含它将要遇到的所有名称。如果不是,你必须在那里修补行为(不能这样做,因为我不知道&#39;你想要对不匹配的项目进行排序)。