2013-03-05 28 views
0

我的目標是從Google日曆獲取2個數組1,並從Google Spread工作表獲取另一個數組。數組的格式都是相同的,只是Calendar數組有一個ID字段。將2個多維數組與php比較

我的多維谷歌試算表數組包含了一些列的,看起來像:

array (
'startDate' => '2013-03-29', 
'endDate' => '2013-03-29', 
'startTime' => '08:00', 
'endTime' => '20:00', 
'title' => 'Ext2 Joe', 
) 

我的多維谷歌日曆數組包含了一些列的樣子:

array (
'startDate' => '2013-03-29', 
'endDate' => '2013-03-29', 
'startTime' => '08:00', 
'endTime' => '20:00', 
'title' => 'Ext2 Joe', 
'id' => 'enmjke5qpjs41q93vi8tibp85k', 
) 

下面是代碼我在用。它錯過了很多在兩者中都存在的事件。我一直在努力解決這個問題,並以不同的方式重新設置它的格式,似乎無法讓它刪除重複項,只留下一個包含剩餘內容的數組$final_array。因此,我可以將這些作品添加到Google日曆中,因爲它們尚不存在。

$k=0; 
$match=0; 
$remove_events=array_values($all_events); 
$add_final_array=$final_array; 
foreach($final_array as $array_final) 
{ 

$h=0; 

foreach ($all_events as $loop_all_events) 
{ 
     if ($array_final["startDate"]==$loop_all_events["startDate"]){ 
      if ($array_final["endDate"]==$loop_all_events["endDate"]) { 
       if ($array_final["title"]==$loop_all_events["title"]) { 
        if($array_final["startTime"]==$loop_all_events["startTime"]) 
{ 


       unset($add_final_array[$k]); 
       unset($remove_events[$h]); 
       $remove_events=array_values($remove_events);      
       $match++; 
      } } } } 



$h++;   
} 


$k++;      

} 
+0

你嘗試[和array_diff(http://www.php.net/manual/en/function.array-diff.php)?或者如果將它們合併在一起會發生什麼?會不會有你關心的衝突數據?或者你只是想將其中一個合併到另一個? – mkaatman 2013-03-05 20:19:13

+0

我嘗試了數組比較,但它沒有找到匹配。我將數組diff放在foreach中($ all_events作爲$ loop_all_events),並將$ loop_all_events與$ array_final進行比較,但它是空的。當我試圖print_r的結果。 – 2013-03-05 20:23:26

+0

我想爲什麼數組差異不起作用的部分原因是我沒有一套獨特的數據進行比較。我是否需要比較數組中的所有4個元素來查看它是否是唯一的。這或我有不正確的格式,我嘗試了幾種方法。 – 2013-03-05 20:26:08

回答

0
<?php 
$array1 = array (
'startDate' => '2013-03-29', 
'endDate' => '2013-03-29', 
'startTime' => '08:00', 
'endTime' => '20:00', 
'title' => 'Ext2 Joe', 
); 

$array2 = array (
'startDate' => '2013-03-29', 
'endDate' => '2013-03-29', 
'startTime' => '08:00', 
'endTime' => '20:00', 
'title' => 'Ext2 Joe', 
'id' => 'enmjke5qpjs41q93vi8tibp85k', 
); 

    $diff = my_array_diff($array1, $array2); 
    echo '<pre>'; 
    print_r($diff); 

    function my_array_diff($array1, $array2){ 
    $diff1 = array_diff_assoc($array1, $array2); 
    $diff2 = array_diff_assoc($array2, $array1); 
    $diff = array_merge($diff1, $diff2); 

    return $diff; 

    } 
?> 

輸出:

Array 
(
    [id] => enmjke5qpjs41q93vi8tibp85k 
) 
+0

我比較的數據是開始時間,停止時間,開始日期和標題。該id只是谷歌日曆的ID,如果我需要刪除該事件,那麼這就是我使用的ID。所以我知道只會存在於一個數組中。我無法正確地比較第一個多維數組中的每個數組,而第二個多維數組中的每個數組忽略了id字段,因爲它只在一個數組中。我列出了各個數組的合成多維數組中的衆多元素之一,所以每個人都可以看到我的格式是如何。 – 2013-03-05 20:28:59

+0

你可以在函數中取消設置id,然後將它們進行比較...... – 2013-03-05 20:32:02

+0

不是我所需要的,因爲我已經取消了設置ID,但是我能夠得到它的工作,謝謝。 – 2013-03-06 16:15:02