首页 >后端开发 >php教程 >如何以数组中对象的某个字段为基准重新排列数组的内容

如何以数组中对象的某个字段为基准重新排列数组的内容

WBOY
WBOY原创
2016-06-06 20:28:341611浏览

比如下面是我从数据库中读取出来的数据,然后我想以suppliers_id为基准重新排列这个数组,有什么比较好的方法?

<code>[
    {
        cart_id: "6",
        suppliers_id: "1",
        goods_name: "商品1",
    },
    {
        cart_id: "7",
        suppliers_id: "1",
        goods_name: "商品2",
    }
    {
        cart_id: "7",
        suppliers_id: "1",
        goods_name: "商品3",
    }
]</code>

变成

<code>[
    //suppliers_id
    1:
    [
        {
            cart_id: "6",
            suppliers_id: "1",
            goods_name: "商品1",
        },
        {
            cart_id: "7",
            suppliers_id: "1",
            goods_name: "商品3",
        }
    ]
    //suppliers_id
    2:
    [
        {
            cart_id: "7",
            suppliers_id: "1",
            goods_name: "商品2",
        }
    ]
]</code>

回复内容:

比如下面是我从数据库中读取出来的数据,然后我想以suppliers_id为基准重新排列这个数组,有什么比较好的方法?

<code>[
    {
        cart_id: "6",
        suppliers_id: "1",
        goods_name: "商品1",
    },
    {
        cart_id: "7",
        suppliers_id: "1",
        goods_name: "商品2",
    }
    {
        cart_id: "7",
        suppliers_id: "1",
        goods_name: "商品3",
    }
]</code>

变成

<code>[
    //suppliers_id
    1:
    [
        {
            cart_id: "6",
            suppliers_id: "1",
            goods_name: "商品1",
        },
        {
            cart_id: "7",
            suppliers_id: "1",
            goods_name: "商品3",
        }
    ]
    //suppliers_id
    2:
    [
        {
            cart_id: "7",
            suppliers_id: "1",
            goods_name: "商品2",
        }
    ]
]</code>

看到标签是 php 表示无能为力。

如果是在前端处理你倒是可以用 sort(function(a,b){}) 这种思路来。

使用PHP的uksort函数,这货可以接收两个参数

<code>$arr = [
{c:"213"}
,
{c:"dadad"}]
function compare_func($a, $b){
    return $a=>c - $b=>c;
}
uksrot($arr,"compare_func" );</code>
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn