2011-04-21 27 views
1

我需要得到这两个数组之间的区别,我已经试过array_diff($array1,$array2)没有成功,任何想法?阵列的区别

阵列1

Array 
(
    [0] => Array 
     (
      [status] => 61192106047320064 
     ) 

    [1] => Array 
     (
      [status] => 61185038284357632 
     ) 

    [2] => Array 
     (
      [status] => 61182890951720960 
     ) 

) 

数组2

Array 
(
    [0] => Array 
     (
      [status] => 61185038284357632 
     ) 

    [1] => Array 
     (
      [status] => 61182890951720960 
     ) 

) 

在此先感谢。

+0

定义的区别你需要的所有的不同或数组1 [0] ==数组2 [0]你需要打印的区别。显示你尝试过的一些代码。不知您对算法搜索阵列... – austinbv 2011-04-21 22:33:26

+0

究竟你是如何定义的区别?设置差异,对称差异,必须元素具有相同的阵列位置,...?你期望的结果是什么? – phimuemue 2011-04-21 22:33:42

+0

第一个数组有新的结果,第二个是用于分隔值而不是索引,我需要得到数组之间的差异,并将结果放入数据库,期望从fisrt数组获得[status] => 61192106047320064。 – greenbandit 2011-04-21 22:36:37

回答

2

也许我米误会,但你就不能这样做对你的具体问题?

$newStatuses = array(); 

foreach($array1 as $element1) { 
    foreach($array2 as $element2) { 
     if($element1['status'] == $element2['status']) { 
      continue 2; 
     } 
    } 

    $newStatuses[] = $element1; 
} 

$ newStatuses的每个元素将是array1中'status'元素不在array2中的数组。

所以,$ newStatuses会是这样:

Array 
(
    [0] => Array 
     (
      [status] => 61192106047320064 
     ) 

) 
+0

由于它的工作原理就像一个魅力! – greenbandit 2011-04-22 00:50:29

+0

非常好!乐意效劳。 – Compeek 2011-04-22 02:08:31

2

根据array_diff

此函数只检查了n维阵列中的一个维度。当然,你可以用和array_diff检查更深的维度($数组1 [0],$数组2 [0]);.

因此不能直接diff的这些阵列的第二维度。

取而代之,也许可以使用array_map提取status值,保存为两个一维数组,然后使用array_diff。如果您有多个键,请使用for循环。