欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php数组合并示例代码

程序员文章站 2022-04-13 08:37:02
...

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 分享一个php数组合并的实例代码,学习下php中实现数组合并的方法,有需要的朋友做个参考。 最近做一个报表,要求若某几项相同就合并这几行,并将数字项相加显示。 首先,考虑遍历数组,拿出数组的最

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  分享一个php数组合并的实例代码,学习下php中实现数组合并的方法,有需要的朋友做个参考。

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

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

  但是实际运行,发现执行3次后就不执行了,而这时的数组长度是6.一直没搞懂为什么不继续执行了。

  数组是采用&引用删除的,删除项确影响到了原数组的。

  既然删除会影响遍历,那就不删除,而是将该项的值设置为空。

  问题就解决了,最后用array_filter过滤下空值即可。

  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;

  }

php数组合并示例代码