les différences entre deux tableaux associatifs

recette(s) semblable(s): php | snippet

Cette fonction compare le tableau $old_a et le tableau $new_a.  elle retourne un tableau à plusieurs dimensions contenant les clés, et leurs valeurs, ajoutés, supprimés, modifiés et identiques:

'ajout' => array(),
'suppression' => array(),
'changement' => array(),
'identique' => array()
//php 
function my_diff_assoc($old_a, $new_a) {
  $r = array(
   'ajout' => array(),
   'suppression' => array(),
   'changement' => array(),
   'identique' => array()
 );
 foreach ( $old_a as $k => $v ) {
  // les clés qui existe dans les deux  
  if ( array_key_exists($k, $new_a)  ) {
     // la valeur a changé
     if ( $v != $new_a[$k] ) $r['changement'][$k] = $v;     
     // sinon elle est identique
     else $r['identique'][$k] = $v; 
     unset($new_a[$k]);
  }
  // sinon ça à été supprimé
  else $r['suppression'][$k] = $v; 
 }
// et à la fin il nous reste les nouveautés
$r['ajout'][$k] = $new_a;
 return $r;    
}