[PHP] Aide sur fonction

georges_paradeque
Invité n'ayant pas de compte PHPfrance

21 juil. 2010, 12:33

Bonjour,

J'ai besoin d'un coup de pouce sur l'utilisation d'une fonction.

voici mon code :
function compare($tableau1, $tableau2, $active='1'){
	foreach ($tableau1 as $valeur) {
		if ( (in_array($valeur, $tableau2)) ){ // afficher donnees presente dans 1 mais absente de 2
//		if ( (!in_array($valeur, $tableau2)) ){ // afficher donnees absente de 1 mais presente dans 2
		}
		$anomalie[] = $valeur; 
	}
}
Je veux un truc du genre
function compare($tableau1, $tableau2, $active='0'){
	if($active='0'){ $in_out = 'in_array' } else { $in_out = '!in_array' }
	if (isset($tableau2)) {
		foreach ($tableau1 as $valeur) {
		if ( ($in_out($valeur, $tableau2)) ){
			$anomalie[] = $valeur; 
		} else
		{
			$anomalie[] = $tableau1;
		} 
		}
	}
}
Les valeurs possibles d'appel de la fonction :

compare($tableau1)

compare($tableau1, $tableau2) // implicite $active='0'

compare($tableau1, $tableau2, '1')

Merci à tous !!

Eléphanteau du PHP | 30 Messages

21 juil. 2010, 12:42

Pourquoi ne pas utiliser array_diff ?

Et si tu veux l'inverse, tu n'as qu'à interverti les tableaux au niveau des paramètres.

La documentation de array_diff ici : http://ch2.php.net/manual/fr/function.array-diff.php
PHP, Javascript, VBScript, Java, Python, Ruby, 4D, LotusScript, ObjectivC, C, C++, et sans compter les framework...
Qui a dit que les programmeurs n'avaient pas d'amis ?

Mon blog : http://www.programmeur.ch/blog/

georges_paradeque
Invité n'ayant pas de compte PHPfrance

21 juil. 2010, 12:49

Bah parce que je ne connais pas, 'suis débutant hein ! :D

L'inversion n'est pas bonne.

exemple :

1 = x y z
2 = a b c x

present dans 1 et 2 => x
present dans 1 et absent dans 2 => y z
present dans 2 et absent dans 1 => a b c

Eléphanteau du PHP | 30 Messages

21 juil. 2010, 12:57

present dans 1 et 2 => x
present dans 1 et absent dans 2 => y z
present dans 2 et absent dans 1 => a b c
Alors voilà
Pour obtenir les valeurs présentes dans 1 et pas dans 2 :
$tableau = array_diff($tableau1,$tableau2);
Pour obtenir les valeurs présentes dans 2 et pas dans 1 :
$tableau = array_diff($tableau2,$tableau1);
Pour obtenir uniquement les valeurs présentes dans les deux :
$tableau = array_intersect($tableau1,$tableau2);
ça devrait faire ton bonheur.
PHP, Javascript, VBScript, Java, Python, Ruby, 4D, LotusScript, ObjectivC, C, C++, et sans compter les framework...
Qui a dit que les programmeurs n'avaient pas d'amis ?

Mon blog : http://www.programmeur.ch/blog/