如何在PHP中合并此数组的重复元素?

马克

我有一个像这样的数组:

$array = array(
    0 => array("ordernumber" => "1", "name" => "John", "product" => "laptop", "component" => "memory"),
    1 => array("ordernumber" => "1", "name" => "John", "product" => "laptop", "component" => "cpu"),
    2 => array("ordernumber" => "1", "name" => "John", "product" => "desktop", "component" => "cpu"),
    3 => array("ordernumber" => "2", "name" => "Pete", "product" => "monitor", "component" => "")
);

它包含来自不同订单的数据,但是如您所见,一个订单可以包含多个购买的产品,并且每个产品可以包含不同的“组件”。这个数组中有很多重复的数据,所以我想把它变成这样:

$array = array(
    0 => array(
        "order" => array(
            "ordernumber" => "1", "name" => "John"
        ),
        "products" => array(
            0 => array(
                "name" => "laptop",
                "components" => array("memory", "cpu")
            ),
            1 => array(
                "name" => "desktop",
                "components" => array("cpu")
            )
        )
    ),
    1 => array(
        "order" => array(
            "ordernumber" => "2", "name" => "Pete"
        ),
        "products" => array(
            0 => array(
                "name" => "monitor",
                "components" => array()
            )
        )
    )
);

什么是做到这一点的好方法?

阿肖克·钱德拉帕尔(Ashok Chandrapal)

请使用下面的代码使解决方案成为您想要的

<?php 

$array = array(
    0 => array("ordernumber" => "1", "name" => "John", "product" => "laptop", "component" => "memory"),
    1 => array("ordernumber" => "1", "name" => "John", "product" => "laptop", "component" => "cpu"),
    2 => array("ordernumber" => "1", "name" => "John", "product" => "desktop", "component" => "cpu"),
    3 => array("ordernumber" => "2", "name" => "Pete", "product" => "monitor", "component" => "")
);



$final_array = [];
foreach($array as $k=>$v){
    $final_array[$v['ordernumber']]['order']['ordernumber'] = $v['ordernumber'];
    $final_array[$v['ordernumber']]['order']['name'] = $v['name'];

    $final_array[$v['ordernumber']]['products'][$v['product']]['name'] = $v['product'];
    $final_array[$v['ordernumber']]['products'][$v['product']]['components'][] = $v['component'];
}

// You can skip this foreach if there will not metter of KEY of an array in your code!
$final_array = array_values($final_array);
foreach($final_array as $k=>$v){
    $final_array[$k]['products'] = array_values($final_array[$k]['products']);  
}


echo "<pre>";
print_r($final_array);

?>

它应该工作!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中的数组中重复元素?

来自分类Dev

如何在MongoDB中计算数组重复元素

来自分类Dev

如何在MongoDB中计算数组重复元素

来自分类Dev

如何在Ruby中的重复元素上拆分数组

来自分类Dev

如何从 Swift 5 中的数组中删除重复元素?

来自分类Dev

如何获得红宝石数组中重复元素的索引

来自分类Dev

如何删除多维数组中的重复元素?

来自分类Dev

如何以浮点精度查找数组中的重复元素?

来自分类Dev

如何对数组中重复元素的值求和

来自分类Dev

如何从JS数组中过滤掉重复元素?

来自分类Dev

如何在Python中删除列表中的重复元素

来自分类Dev

如何在PHP中的两个json对象之间检测重复元素

来自分类Dev

如何在C ++中查找重复元素的索引?

来自分类Dev

如何在表中查找重复元素-Sybase

来自分类Dev

如何在一维张量中查找重复元素

来自分类Dev

如何在元组中重复元素n次

来自分类Dev

数组中的重复元素(SML)

来自分类Dev

JS-数组中的重复元素

来自分类Dev

删除数组中的重复元素

来自分类Dev

删除数组中的重复元素

来自分类Dev

JS-数组中的重复元素

来自分类Dev

识别数组中的重复元素?

来自分类Dev

如何在PHP中合并数组的2个元素?

来自分类Dev

如果包含重复元素,如何合并多个向量?

来自分类Dev

如何在数组颤振中找到重复元素的长度?

来自分类Dev

数组推送,重复元素

来自分类Dev

我们如何删除C中数组中的重复元素?

来自分类Dev

如何排除数组中数据块中的重复元素?

来自分类Dev

根据重复元素的数量对PHP中的多维关联数组进行排序/限制