2010-10-13 69 views
2

我有两个多维数组。与相同的数据......发生什么事是。在一个数组值可以在内部一个多维数组来改变..这是我的阵列...PHP:如何查找二维数组的差异?

$previousA = array(); 
$previousA["t"] = array("twitter","picasa"); 
$previousA["d"] = array("youtube","gmail"); 


$freshA = array(); 
$freshA["t"] = array("twitter","picasa","gmail"); 
$freshA["d"] = array("youtube"); 

在任何时间总价值将会是四个“twitter”,“picasa”,“youtube”,“gmail”,它们可以从$ previousA["t"] < =>$previousA["d"] =>$previousA["d"]现在我想知道哪些值从$previousA["t"]变为$ previousA["d"]与$ freshA

+0

您希望在您的示例中输出什么输出? – codaddict 2010-10-13 05:38:43

+0

我想知道gmail从[“d”] => [“t”]从previousA – Rajesh 2010-10-13 05:40:31

回答

1

您可以利用阵列差异函数array_diff作为:

$from_d_to_t = array_diff($freshA["t"],$previousA["t"]); 
$from_t_to_d = array_diff($freshA["d"],$previousA["d"]); 

if($from_d_to_t) { 
     echo "Elements moved from d to t are ".implode(',',$from_d_to_t)."\n"; 
} 
if($from_t_to_d) { 
     echo "Elements moved from t to d are ".implode(',',$from_t_to_d)."\n"; 
} 

Working code

0

这就是简单,所有你需要做的是环通的多维度阵列(我假设是2阶),并使用功能array_diff比较子阵列。此功能给出了两个阵列即额外的记录之间的差异在阵列

0

如果你的元素必须是无论是在td那么你真的只需要跟踪的td之一。

ex) 
$previousT = array('twitter', 'picasa'); 
$currentT = array('picasa', 'gmail'); 

then 

$d_to_t = array_diff($currentT, $previousT); // 'gmail' 
$t_to_d = array_diff($previousT, $currentT); // 'twitter'