将2个多维数组与php进行比较
我的目标是使用两个数组,一个来自谷歌日历,另一个来自谷歌电子表格。两个数组的格式相同,只是日历数组有一个ID字段 我的多维Google电子表格数组包含许多数组,如下所示:将2个多维数组与php进行比较,php,multidimensional-array,Php,Multidimensional Array,我的目标是使用两个数组,一个来自谷歌日历,另一个来自谷歌电子表格。两个数组的格式相同,只是日历数组有一个ID字段 我的多维Google电子表格数组包含许多数组,如下所示: array ( 'startDate' => '2013-03-29', 'endDate' => '2013-03-29', 'startTime' => '08:00', 'endTime' => '20:00', 'title' => 'Ext2 Joe', ) 我的多维Google日历
array (
'startDate' => '2013-03-29',
'endDate' => '2013-03-29',
'startTime' => '08:00',
'endTime' => '20:00',
'title' => 'Ext2 Joe',
)
我的多维Google日历数组包含多个数组,如下所示:
array (
'startDate' => '2013-03-29',
'endDate' => '2013-03-29',
'startTime' => '08:00',
'endTime' => '20:00',
'title' => 'Ext2 Joe',
'id' => 'enmjke5qpjs41q93vi8tibp85k',
)
这是我正在使用的代码。它忽略了这两个领域中存在的许多事件。我一直在努力解决这个问题,并以不同的方式重新格式化它,似乎无法让它删除重复项,而只留下一个包含剩余内容的数组$final_array
。因此,我可以将这些片段添加到谷歌日历中,因为它们在那里还不存在
$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++;
}
你试过了吗?或者如果将它们合并在一起会发生什么?是否会有您关心的冲突数据,或者您只是想将一个数据合并到另一个数据中?我尝试了array diff,但没有找到匹配项。我将数组diff放在foreach中($loop\u all\u events为$loop\u all\u events),并将$loop\u all\u events与$array\u final进行比较,但结果为空。当我试图打印结果时,我认为array diff不起作用的部分原因是因为我没有一组唯一的数据进行比较。我需要比较数组中的所有4个元素,看看它是否唯一。或者我的格式不正确,我尝试了几种方法。我比较的数据是开始时间、停止时间、开始日期和标题。这个id就是谷歌日历上的id,如果我需要删除这个事件,那就是我使用的id。所以我知道它只存在于一个数组中。我无法让它正确比较第一个多维数组中的每个数组第二个多维数组中的每个数组忽略id字段,因为它只在一个数组中。我列出了各个数组的格式,这些数组只是多维数组中许多数组中的一个,这样每个人都可以看到我的格式。不完全正确我需要什么,因为我已经取消设置id,但我能够让它工作谢谢。
<?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
)