首页 > 后端开发 > php教程 > php兑现数组的合并

php兑现数组的合并

WBOY
发布: 2016-06-13 11:03:30
原创
812 人浏览过

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

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

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


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

代码如下

//合并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;	}
登录后复制
相关标签:
amp
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板