簡體   English   中英

根據另一個數組的值對數組排序

[英]Sort an Array by values based on another Array

我該如何轉:

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'  )

換句話說-根據值數組對對象數組進行排序...

$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將包含它將要遇到的所有名稱。 如果不是這樣,您將不得不在其中修補行為(無法執行此操作,因為我不知道您希望將不匹配的項目分類到“何處”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM