Forum Clubic

Array_diff avec des tableaux à 2 dimensions

Bonjour,

J’ai un petit problème pour trouver la différence entre 2 tableaux à 2 dimensions.

Par exemple si j’ai mes 2 tableaux suivants :

array(
	array("tata", 123),
	array("toto", 456),
	array("titi", 789),
	array("tutu", 147),
);
array(
	array("tutu", 456),
	array("toto", 456),
	array("tata", 123)
);

Je voudrais qu’il me ressort uniquement si je compare le premier tableau avec le deuxième


array(
	array("titi", 789),
	array("tutu", 147),
);

J’ai essayé d’utilisé une fonction de callback via la fonction “array_udiff” mais je n’arrive à faire ressortir le résultat voulu.

Voici ce que j’ai fait:


function callback_udiff ( $a, $b ) {
	if ( array_diff($a, $b) )
		return 1;
	else
		return 0;
}

$diff1 = array_udiff($result1, $result2, "callback_udiff");

Est-ce qu’il est possible de trouver la différence via une fonction de callback ou alors je dois parcourir mes 2 tableaux le faire ?

Merci pour votre aide.
Edité le 02/04/2008 à 09:41

Le fait que tes tableaux soient à double dimension est il vraiment obligatoire ?
Car on a l’impression que tes éléments de la première dimension sont des paire “valeur”-“identifiant”.
Tu pourrais faire tes tableaux ainsi :

array(
	array("tata" => 123),
	array("toto" => 456),
	array("titi" => 789),
	array("tutu" => 147),
);
array(
	array("tutu" => 456),
	array("toto" => 456),
	array("tata" => 123)
);

Il est possible que j’ai plus que 2 valeurs dans mes “sous-tableaux”.

J’ai oublié de préciser que mes “sous-tableaux” ont tous des tableaux associatifs dans le style


array(
	array("id" => "tata", "index2" => 132, "index3" => "oops"),
	array("id" => "toto", "index2" => 456, "index3" => "yes"),
	...
);