仅在数组中显示一次项目及其数量总和


Displaying item in array only once along with the sum of its quantity

我有一个看起来像这样的数组:

Array
(
    [0] => Jenni
    [1] => 1
    [2] => Silver
    [3] => 1
    [4] => Jenni
    [5] => 1
    [6] => Silver
    [7] => 1
    [8] => Jenni
    [9] => 1
    [16] => Jenni
    [17] => 1
    [18] => Silver
    [19] => 1
    [20] => Calavera
    [21] => 1
    [22] => Jenni
    [23] => 2
    [24] => Silver
    [25] => 1
)

第一个是名称,第二个是数量。现在,我只想显示每个名称及其数量总和一次。例如珍妮 ->数量 5。我该怎么做?

//$data is your array
$result = array();
$key = '';
foreach ($data as $index => $value) {
    //use every even index as key
    if ($index % 2 == 0) {
        $key = $value;
    } else {
      //set or alter the value
      if (isset($result[$key])) {
          $result[$key] += $value;
      } else {
          $result[$key] = $value;
      }
    }
}

在此之后,您可以像这样显示所有值:

foreach ($result as $name => $quantity) {
    echo $name . ' -> Quantity ' . $quantity . "'n";//or '<br />' instead of "'n"
}

你的数组键没有排序,如果你想对它执行求和,那么数组键必须按顺序排列。

Eg:
    $array_holder = array("Jenni","1","Silver","1","Jenni","1","Silver","1","Jenni","1","Jenni","1","Silver","1","Calavera","1","Jenni","2","Silver","1");
    //This is optional if your array is sorted
    $array_holder = array_values($array_holder);//Return sort keys

    $total = count($array_holder);
    $sum = array();
    for($i = 0 < $i < $total; $i+2){
            $sum[$array_holder[$i]] = isset($sum[$array_holder[$i]]) ? $sum[$array_holder[$i]] + $array_holder[$i+1] : $array_holder[$i+1];
   }