簡體   English   中英

如何用相同的鍵值重新排列數組

[英]how to rearrange array with same key value

我想通過這些鍵值重新排列數組。 讓我解釋。 請檢查我的數組值

Array
    (
        [0] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )

        [1] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )

        [2] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 64

            )

        [3] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )
        [4] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 64

            )

    )

這是我的數組結果,我希望通過key recipe_id重新排列它。 他們將一起使用哪個cipal_id。 像那樣

Array
    (
        [0] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )

        [1] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )

        [2] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 90

            )

        [3] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 64

            )
        [4] => stdClass Object
            (

                [user_id] => 103
                [recipe_id] => 64

            )

    )

我如何安排這個數組的值? 我想顯示數組結果,就像上面的例子一樣。 有沒有辦法用相同的鍵值重新排列我的數組。

提前致謝

嘗試這個

$sorted = collect($array)
    ->sortByDesc('recipe_id')
    ->values()
    ->all();

如果您想將它們除以recipe_id,可以使用

$grouped = collect($array)
    ->groupBy('recipe_id')
    ->toArray();

您可以如下使用php usort函數。

$my_sort = function ($a , $b) {
    if ($a->user_id == $b->user_id) {
        if($a->recipe_id == $b->recipe_id) {
            return 0;
        }
        return ($a->recipe_id < $b->recipe_id) ? -1 : 1;
    }
    return ($a->user_id < $b->user_id) ? -1 : 1;
};

$result = usort($arr,$my_sort);
  1. 首先將對象轉換為數組形式

     json_decode(json_encode(json_decode($arr_value_list)), true); // $arr_value_list is values array 
  2. 然后使用以下函數對值進行排序

    $ key_name ='用戶名';

     usort($arr_value_list, function ($a, $b) use(&$key_name) { return $a[$name] - $b[$name]; }); 

通過print_r($ arr_value_list)獲取輸出;

暫無
暫無

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

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