2017-02-22 27 views
1

我正在尋找添加鍵值相同但只有一個鍵的數組。使用相同的鍵值添加數組

比如我有一個打印出如下內容的數組:

Array 
(
[0] => Array 
    (
     [Booked Date] => 2017-02-12 
     [salesMadeToday] => 128327.34 
    ) 

[1] => Array 
    (
     [Booked Date] => 2017-02-13 
     [salesMadeToday] => 162808.03 
    ) 

[2] => Array 
    (
     [Booked Date] => 2017-02-14 
     [salesMadeToday] => 84753.11 
    ) 

[3] => Array 
    (
     [Booked Date] => 2017-02-15 
     [salesMadeToday] => 164110.29 
    ) 

[4] => Array 
    (
     [Booked Date] => 2017-02-16 
     [salesMadeToday] => 106904.50 
    ) 

[5] => Array 
    (
     [Booked Date] => 2017-02-17 
     [salesMadeToday] => 140185.52 
    ) 

[6] => Array 
    (
     [Booked Date] => 2017-02-18 
     [salesMadeToday] => 58404.60 
    ) 

[7] => Array 
    (
     [Booked Date] => 2017-02-12 
     [salesMadeToday] => 21979.00 
    ) 

[8] => Array 
    (
     [Booked Date] => 2017-02-13 
     [salesMadeToday] => 6512.00 
    ) 

[9] => Array 
    (
     [Booked Date] => 2017-02-14 
     [salesMadeToday] => 4534.00 
    ) 

[10] => Array 
    (
     [Booked Date] => 2017-02-17 
     [salesMadeToday] => 14332.02 
    ) 

[11] => Array 
    (
     [Booked Date] => 2017-02-18 
     [salesMadeToday] => 4904.00 
    ) 

) 

現在你可以看到一些日期是相同的。

我該怎麼做才能合併這些鍵並添加salesMadeToday值?

陣列被稱爲:

$ liveForecastSales並且這是通過將使用所述array_merge_recursive()函數2個其他陣列創建的。

原來陣列由從扳指從數據庫的數據是有點太多的代碼在這裏貼上但如果你需要的任何其他信息請詢問其他功能調用制定。

謝謝

+0

良好的理論問題 –

+0

不清楚,你想在'預訂日期'相同的條目中總結'salesMadeToday'的值? – RomanPerekhrest

+0

是的,我想總結這些價值@RomanPerekhrest – Andrew

回答

0

使用常規foreach環和array_values功能的解決方案:

$result = []; 
foreach ($liveForecastSales as $item) { 
    if (!isset($result[$item['Booked Date']])) { 
     $result[$item['Booked Date']] = $item; 
    } else { 
     $result[$item['Booked Date']]['salesMadeToday'] += $item['salesMadeToday']; 
    } 
} 

print_r(array_values($result)); 

DEMO link

0

嗨trye這個簡單的比較討論:

$arr = Array 
(
[0] => Array 
    (
     [Booked Date] => 2017-02-12 
     [salesMadeToday] => 128327.34 
    ) 

[1] => Array 
    (
     [Booked Date] => 2017-02-13 
     [salesMadeToday] => 162808.03 
    ) 

[2] => Array 
    (
     [Booked Date] => 2017-02-14 
     [salesMadeToday] => 84753.11 
    ) 

[3] => Array 
    (
     [Booked Date] => 2017-02-15 
     [salesMadeToday] => 164110.29 
    ) 

[4] => Array 
    (
     [Booked Date] => 2017-02-16 
     [salesMadeToday] => 106904.50 
    ) 

[5] => Array 
    (
     [Booked Date] => 2017-02-17 
     [salesMadeToday] => 140185.52 
    ) 

[6] => Array 
    (
     [Booked Date] => 2017-02-18 
     [salesMadeToday] => 58404.60 
    ) 

[7] => Array 
    (
     [Booked Date] => 2017-02-12 
     [salesMadeToday] => 21979.00 
    ) 

[8] => Array 
    (
     [Booked Date] => 2017-02-13 
     [salesMadeToday] => 6512.00 
    ) 

[9] => Array 
    (
     [Booked Date] => 2017-02-14 
     [salesMadeToday] => 4534.00 
    ) 

[10] => Array 
    (
     [Booked Date] => 2017-02-17 
     [salesMadeToday] => 14332.02 
    ) 

[11] => Array 
    (
     [Booked Date] => 2017-02-18 
     [salesMadeToday] => 4904.00 
    ) 

); 
function exists($date){ 
    for($i=0; $i<count($arr);$i++){ 

    if($arr[$i]['Booked Date']==$date){ 
     return true; 
    } 
    return false; 
} 
for($i=0; $i<count($arr);$i++){ 
    if(!exists($arr[$i]['Booked Date'])){ 
     $new[]=$arr[$i]; 
    } 

} 
+1

我不斷收到: 注意:未定義的變量:ARR 這是怎麼了我宣佈$改編 $ ARR =陣列(); 和$ ARR是: $ ARR = array_merge_recursive($ liveForecastSales,$ fullCanxForecastSales); 哪個打印出原始數組是什麼? 還有一個缺失}所以我認爲,關閉功能,然後運行for循環?謝謝@阿爾瓦羅Touzón – Andrew

+0

好吧,array_merge_recursive,看起來更好 –

相關問題