Php 如何重新排列具有相同键值的数组

Php 如何重新排列具有相同键值的数组,php,arrays,laravel,Php,Arrays,Laravel,我想按这些键值重新排列数组。让我解释一下。请检查我的数组值 Array ( [0] => stdClass Object ( [user_id] => 103 [recipe_id] => 90 ) [1] => stdClass Object ( [user

我想按这些键值重新排列数组。让我解释一下。请检查我的数组值

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

            )

    )
这是我的数组结果,我想让它按关键配方id重新排列。哪个配方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();
如果要按配方id划分,可以使用

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

$sorted = collect($array)
    ->sortByDesc('recipe_id')
    ->values()
    ->all();
如果您想按配方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);
$my_sort=函数($a,$b){
如果($a->user\u id==$b->user\u id){
如果($a->recipe\u id==b->recipe\u id){
返回0;
}
返回($a->recipe\u id<$b->recipe\u id)?-1:1;
}
返回($a->user\u id<$b->user\u id)?-1:1;
};
$result=usort($arr,$my_sort);

您可以按如下方式使用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);
$my_sort=函数($a,$b){
如果($a->user\u id==$b->user\u id){
如果($a->recipe\u id==b->recipe\u id){
返回0;
}
返回($a->recipe\u id<$b->recipe\u id)?-1:1;
}
返回($a->user\u id<$b->user\u id)?-1:1;
};
$result=usort($arr,$my_sort);
  • 首先将对象转换为数组形式

    json_decode(json_encode(json_decode($arr_value_list)), true);
    // $arr_value_list is  values array
    
  • 然后使用以下函数对值进行排序

    $key_name='user_id'

    usort($arr_value_list, function ($a, $b) use(&$key_name)
            {
                return $a[$name] - $b[$name];
            });
    
  • 通过print\u r($arr\u value\u list)获取输出

  • 首先将对象转换为数组形式

    json_decode(json_encode(json_decode($arr_value_list)), true);
    // $arr_value_list is  values array
    
  • 然后使用以下函数对值进行排序

    $key_name='user_id'

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

  • 通过print\u r($arr\u value\u list)获取输出

    您可以使用PHP usort函数实现该结果的可能重复::您可以使用PHP usort函数实现该结果的可能重复::嗨,我有一个问题,我可以在数组中生成相同的recipe_id值,就像此数组中的所有90个值和所有64个alsoHI,我有一个问题,我能在数组中生成相同的recipe_id值吗?就像所有90个值在数组中显示一样,并且所有64个值也在数组中显示一样