繁体   English   中英

如何检查数组中的重复项,然后在PHP中对其值进行处理?

[英]How to check for duplicates in an array and then do something with their values in PHP?

我有一个数组,例如("1:2","5:90","7:12",1:70,"29:60")其中ID和数量用':'(冒号)分隔,我想做的是,当ID重复时,程序将添加数量并返回新的数组集,因此在示例中它将变为("1:72","5:90","7:12","29:60")

例2

("1:2","5:90","7:12","1:70","29:60","1:5") 

("1:77","5:90","7:12","29:60").

简单的逐步操作:

  $arr = array("1:2","5:90","7:12","1:70","29:60");
  $tmp = array();
  foreach($arr as $item)
  {
   list($id, $value) = explode(':', $item);
   if (isset($tmp[$id])) 
        $tmp[$id] += $value;
   else
        $tmp[$id] = $value;
  }

  $arr = array();
  foreach($tmp as $id => $value)
    array_push($arr, $id . ':' . $value);

  var_dump($arr);

假设数据格式是实际的数组,或者您可以将其解析为一个数组:

$data = array("1:2","5:90","7:12","1:70","29:60","1:5");
$values = array();
foreach ($data as $value) {
    list($id, $qty) = explode(':', $value);
    if (isset($values[$id])) {
        $values[$id] += $qty;
    } else {
        $values[$id] = $qty;
    }
}
foreach ($values as $id => &$qty) {
    $qty = "$id:$qty";
}
$values = array_values($values);

尝试这样做

$array  = array("1:2","5:90","7:12","1:70","29:60","1:5");
$result = array();
$sum    = array();
foreach($array as $value)
{
        list($k,$v) = explode(':',$value);
        $sum[$k]   += $v; 
        $result[$k] = $k.':'.$sum[$k];
}
unset($sum);
print_r($result); 
<?php

$arr = array("1:2","5:90","7:12", "1:70","29:60");

$newArr = array();

foreach($arr as $key => $value) {

  list($id, $quantity) = explode(':', $value);

  if(isset($newArr[$id]))
    $newArr[$id] += $quantity;
  else
    $newArr[$id] = $quantity;

}

foreach($newArr as $key => $value) {
  $newArr[$key] = "$key:$value";
}

print_r($newArr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM