首頁 > 後端開發 > php教程 > php兑现数组的合并

php兑现数组的合并

WBOY
發布: 2016-06-13 11:03:30
原創
813 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板