我在PHP中有2个数组。其中一个包含日期列表,另一个包含数字列表。
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;
......等等。
我搜索了网站,但无法找到我需要的确切内容。任何帮助将不胜感激......
答案 0 :(得分:0)
$newArray = array();
for($i = 0; $i < count(Array1); $i++) {
$newArray[$Array1[$i]] = $Array2[$i];
}
echo $newArray[$date1] + $newArray[$date2];
将日期作为键,以便于数学运算。
答案 1 :(得分:0)
$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
}
Array3就像
Array3
(
[0] => array( 'date' => " ",'sum' => " ")
[1] => array( 'date' => " ",'sum' => " ")
)
答案 2 :(得分:0)
您是否正在尝试计算 Array2 中 Array1 中与“某些预定义目标值相匹配”的条目中的所有值?
如果是这样,这个 for for loop version 应该有效:
private function forLoopVersion($array1, $array2, $target) {
$result = 0;
for ($i = 0; $i < count($array1); ++$i) {
if ($array1[$i] == $target) {
$result += $array2[$i];
}
}
return $result;
}
此外,此 foreach循环版可能有效,但我不知道$key
的{{1}}是否可用于索引$array1
中的元素。你可以尝试一下:
$array2
答案 3 :(得分:0)
您可以迭代$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