2010-10-13 4 views
2

J'ai deux tableaux multidimensionnels .. avec les mêmes données ... ce qui se passe est .. valeurs dans un réseau peuvent changer en interne dans un tableau multidimensionnel .. voici mon tableau ...PHP: Comment trouver la différence de tableaux 2D?

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


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

à tout les valeurs totales de temps seront quatre "twitter", "picasa", "youtube", "gmail" qui peut changer de $ previousA["t"] < =>$previousA["d"] maintenant je veux savoir quelles valeurs changent de $previousA["t"] à $ previousA["d"] en comparant avec $ freshA

+0

Quelle sortie attendez-vous dans votre exemple donné? – codaddict

+0

je veux savoir que gmail est déplacé de ["d"] => ["t"] de previousA – Rajesh

Répondre

1

Vous pouvez utiliser la fonction de différence de matrice array_diff comme:

$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

Cest simple, tout ce que vous devez faire est de boucle dans votre tableau multi-dimension (qui je suppose est d'ordre 2) et d'utiliser la fonction array_diff pour comparer les sous-réseaux. Cette fonction donne la différence entre deux tableau i.e. les enregistrements supplémentaires dans le tableau

0

Si vos éléments doivent être soit dans t ou d alors vous avez vraiment besoin de garder une trace de l'un des t ou d.

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'