首頁 >後端開發 >php教程 >如何以数组中对象的某个字段为基准重新排列数组的内容

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

WBOY
WBOY原創
2016-06-06 20:28:341613瀏覽

比如下面是我从数据库中读取出来的数据,然后我想以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