[英]Compare 2 multi-dimensional arrays with php
我的目标是从Google日历中获取2个数组1,从Google Spread表中获取另一个数组。 除Calendar数组具有一个ID字段外,这两个数组的格式相同。
我的多维Google Spread Sheet数组包含许多看起来像这样的数组:
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
。 因此,我可以将这些片段添加到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++;
}
<?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
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.