具有相同值的数组值的总和

时间:2018-07-16 03:24:46

标签: php

嗨,我一直在解决这个问题将近2个星期,但我看不到任何合适的博客或教程,也可能无法解决我的问题...

这是我的问题...

代码:

foreach ($transHistory as $row) {

    $category[] = '{ y: '.$row->new_qty.', label: "'.$row->sku.'" }';

    $series[] = $row->new_qty;

    $nd = $row->createddate;

    $nd = date("Y-m-d", strtotime($nd));

    $date[] = $nd;

}
print_r($series);
print_r($date);

在我的代码中,我得到了这个数组值

//array 1
Array ( [0] => 28 [1] => 28 [2] => 07 [3] => 27 );
//array 2
Array ( [0] => 2 [1] => 1 [2] => 14 [3] => 36 );

我想从数组2中获得[0]和[1]之和。 因为数组1中的[0]和[1]具有相同的值。

所需的输出:

// array 1
Array ( [0] => 28 [1] => 07 [2] => 27 );

//array 2
Array ( [0] => 3 [1] => 14 [2] => 36 );

2 个答案:

答案 0 :(得分:1)

下面的代码将在$ series数组中检入任何重复值,如果找到,则将对$ date数组中相同索引中存在的值求和,并从$ series数组中删除重复项。

foreach ($transHistory as $row) {

    $category[] = '{ y: '.$row->new_qty.', label: "'.$row->sku.'" }';

    $series[] = $row->new_qty;

    $nd = $row->createddate;

    $nd = date("Y-m-d", strtotime($nd));

    $date[] = $nd;

}

$date_new = [];
$temp=[];
foreach($series as $k=>$item)
{
  if(!in_array($item, $temp))
  { 
  $keys = array_keys($series, $item);
  $temp[]=$item;
  $sum = 0;
  foreach($keys as $key)
  {
    $sum+=$date[$key];
  }
  $date_new[]=$sum;
  }
}
$series = $temp;
$date = $date_new;
print_r($series);
print_r($date);

答案 1 :(得分:0)

我刚准备好了,这是你要找的吗?

<?php

$array1 = Array(28,28,7,27);
$array2 = Array(2,1,14,36);

sort($array1);
sort($array2);

for ($i = 0;$i < count($array1);$i++) {
  if ($i == count($array1) - 1) {
    break;
  } else if ($array1[$i] == $array1[$i+1] ) {
    $result = $array2[$i] + $array2[$i + 1];
    unset($array1[$i]);
    unset($array2[$i]);
    unset($array2[$i + 1]);
    array_push($array2,$result);
  }
}

// Testing Purposes
print_r($array1);
echo "<pre></pre>";
print_r($array2);

?>

现在我在这里使用unset将值从数组中取出,这意味着如果$ array1 [3]上有东西而我未设置它,则该空间仍然存在,但未排序。这或多或少是个主意,它需要进行修订才能完美地工作。