如何用相同的键值重新排列数组

时间:2018-11-16 07:52:35

标签: php arrays laravel

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

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

            )

    )

这是我的数组结果,我希望通过关键cipal_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

            )

    )

如何排列此数组值??我想显示数组结果,就像上面的例子一样。有什么办法可以用相同的键值重新排列我的数组。

预先感谢

3 个答案:

答案 0 :(得分:3)

尝试

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

如果您想将它们除以recipe_id,可以使用

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

答案 1 :(得分:0)

您可以按照以下方式使用php usort函数。

$ java -Xmx6G -cp "~/webgraph-deps/*" it.unimi.dsi.webgraph.ASCIIGraph

答案 2 :(得分:0)

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

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

    $ key_name ='user_id';

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

通过print_r($ arr_value_list);获得输出