php数组合并示例代码

发布时间:2020-03-14编辑:脚本学堂
分享一个php数组合并的实例代码,学习下php中实现数组合并的方法,有需要的朋友做个参考。

最近做一个报表,要求若某几项相同就合并这几行,并将数字项相加显示。

首先,考虑遍历数组,拿出数组的最后一项跟其它项比较,若符合条件则做合并操作并删除该项。

但是实际运行,发现执行3次后就不执行了,而这时的数组长度是6.一直没搞懂为什么不继续执行了。
数组是采用&引用删除的,删除项确影响到了原数组的。

既然删除会影响遍历,那就不删除,而是将该项的值设置为空。
问题就解决了,最后用array_filter过滤下空值即可。

php数组合并代码:
 

复制代码 代码示例:
<?php
//合并itemsearch的结果 
    private function mergeList(&$arr) 
    { 
        $data = array(); 
        $n = &$arr; 
        foreach ($n as $key => $value) { 
            if(!$value) continue
            array_push($data,$this->getItem($value,$n)); 
        } 
        return array_filter($data); 
    } 
    private function getItem(&$item,&$arr){ 
        foreach ($arr as $key => $value) { 
            if(!$value) { 
                continue; 
            }; 
            if($item["itemTypeName"] == $value["itemTypeName"] 
            && $item["weight"] == $value["weight"] 
            && $item["type"] == $value["type"]){ 
                if($item["itemTypeId"] == $value["itemTypeId"] 
                    && $item["warehouseId"] == $value["warehouseId"]){ 
                    continue;    
                }else{ 
                    $item["stockIn"] += $value["stockIn"]; 
                    $item["remain"] += $value["remain"]; 
                    $item["stockOut"] += $value["stockOut"]; 
                    $item["stockIn"] = sprintf("%.4f",$item["stockIn"]); 
                    $item["remain"] = sprintf("%.4f",$item["remain"]); 
                    $item["stockOut"] = sprintf("%.4f",$item["stockOut"]); 
                    $arr[$key] = ""; 
                } 
            } 
        } 
        return $item; 
    }