Php 比较两个数组并添加相似的值

Php 比较两个数组并添加相似的值,php,arrays,loops,Php,Arrays,Loops,我有两个PHP数组。其中一个有一个日期列表,另一个有一个数字列表 Array1 ( [0] => 2010-06-14 [1] => 2010-06-14 [2] => 2010-06-14 [3] => 2014-01-26 [4] => 2014-01-26 ) Array2 ( [0] => 120 [1]

我有两个PHP数组。其中一个有一个日期列表,另一个有一个数字列表

   Array1
    (
        [0] => 2010-06-14
        [1] => 2010-06-14
        [2] => 2010-06-14
        [3] => 2014-01-26
        [4] => 2014-01-26
    )
   Array2
    (
        [0] => 120
        [1] => 100
        [2] => 60
        [3] => 140
        [4] => 30
    )
Array2中的值[0]属于Array1中的日期[0]。我想做的是根据日期将Array2中的所有值相加。任何匹配的日期都应将其值相加。例如,最后我想说:

$date = 2010-06-14;
$value = 280;

$date = 2014-01-26;
$value = 170;
……等等

我已经搜索了整个网站,但找不到确切的我需要的。任何帮助都将不胜感激……

$newArray=array();
$newArray = array();
for($i = 0; $i < count(Array1); $i++) {
  $newArray[$Array1[$i]] = $Array2[$i];
}

echo $newArray[$date1] + $newArray[$date2];
对于($i=0;$i

将日期作为键,以便于计算。

您是否试图计算数组2中的所有值,这些值在数组1中有一个条目,与一些预定义的目标值相匹配

$sum=0;              // New Element
$Array3[][]=0;       // New 2D array

$p=0;                                  // Counter for 2D array
for($i=0;$i<5;$i++)                   // Single loop for traversing
{
$date=Array1[$i];                     // Start for a date
while($date==Array1[$i]){             // For for Similar date
$sum=$sum+Array2[$i];                 // Adding values of similar date
$i++;                                 // Increment array
}
$Array3[$p]["date"]=$date;            // Array3 date element
$Array3[$p]["sum"]=$sum;              // Array4 date element
$i--;                                 // Reducing a value which is incremented in while loop
}
如果是这样,此for loop版本应该可以工作:

private function forLoopVersion($array1, $array2, $target) {
 $result = 0;
 for ($i = 0; $i < count($array1); ++$i) {
  if ($array1[$i] == $target) {
    $result += $array2[$i];
  }
 }
 return $result;
}

您可以迭代
$values
,并从
$dates
中获取相应的日期,以用作结果数组中的键

foreach ($values as $key => $value) {    
    $result[$dates[$key]] = $value + ($result[$dates[$key]] ?? 0);    
}
输出如下:

array (size=2)
  '2010-06-14' => int 280
  '2014-01-26' => int 170

你在做什么?这是如何计算值之和的?请添加一些解释和示例(可能会将您的结果与参与效果进行比较),谢谢您的回复。我没有预定义的目标值。Array1包含几百个日期,Array2包含几百个值。两个数组中的键始终匹配。例如,Array1[50]中的日期将与Array2[50]中的值一致。我需要遍历Array1并匹配所有日期,然后将Array2中的所有值相加。因此,如果Array1[29]和[30]的日期匹配,则Array2[29]和[30]中的值应相加。我希望这是有意义的。你好,是的,这正是我想要的-谢谢。我测试了这个,但是,我认为有一个轻微的错误。似乎最后一美元的价值没有增加。在上面的例子中,2014-01-26等于140。有什么想法吗?我想我应该可以安全地使用:for($I=0;$Iforeach ($values as $key => $value) { $result[$dates[$key]] = $value + ($result[$dates[$key]] ?? 0); }
array (size=2)
  '2010-06-14' => int 280
  '2014-01-26' => int 170