如何检查数组中的重复项,然后在PHP中对它们的值执行某些操作?

时间:2012-02-16 06:00:09

标签: php arrays

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

Ex.2

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

成为

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

4 个答案:

答案 0 :(得分:1)

一步一步简单:

  $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);

答案 1 :(得分:1)

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

$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);

答案 2 :(得分:1)

尝试这样做

$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); 

答案 3 :(得分:1)

<?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);