Algo : trouver les éléments pas commun à deux tableaux [PHP] - PHP - Programmation
Marsh Posté le 24-10-2003 à 12:34:47
euh ! en fait je ne comprends pas trop le fonctionnement de array_diff() (voir ci dessous) donc si qqun avait un algo pour repérer les éléments qui ne sont pas aux 2 tableaux , ca m'interesse.
Voici ce que j'obtiens avec array_diff() : anomalie correspond à array_diff($fichier,$dossier) ET array_diff($dossier,$fichier)
: les sauts de lignes à la fin sont des éléments du tableau anomalie !
|
Marsh Posté le 24-10-2003 à 13:05:32
Montre le bout de code qui fait çà.
Tu dois te prendre les pieds dans le tapis sur le 'ET'...
Marsh Posté le 24-10-2003 à 13:28:42
Mara's dad a écrit : Montre le bout de code qui fait çà. |
je ne pense pas mais bon :
|
ps je suis en php 4.0.6 ... vais ptet faire une mise à jour qd meme
Marsh Posté le 24-10-2003 à 14:57:07
arf ! j'ai trouvé c'est mon affichage du tableau qui déconne, lorsque j'utilise print_r($anomalie) ca fonctionne... -> c'est du au fait que les index ne sont pas contigus ! et que sizeof() ne retourne pas l'index max :
Citation : This is taken from sganer@expio.co.nz comments on the sizeof() function: |
from php.net fonction count()
Marsh Posté le 24-10-2003 à 15:15:15
Ok, alors voilà :
Plusieurs problèmes
1- Pas grave, mais
On ne fait pas :
Code :
|
mais :
Code :
|
2- Tu utilise le même tableau $anomalie, or la deuxième fois, il est écrasé.
3-
Citation : array_diff() retourne un tableau qui contient toutes les valeurs du tableau array1 qui sont absentes de tous les autres arguments. Notez que les clés sont préservées. |
Ca veut dire que dans ta boucle de parcours de $anomalie, tu ne peut pas utiliser un indice $i incrémenté. Les indices sont ceux du premier tableau argument de array_diff.
Regarde ce que fait çà :
Code :
|
Le deuxième tableau contient 6 éléments ( dans ta version comme dans la mienne vu que dans la tienne, il est écrasé ) dont les indices sont 0, 1, 7, 10, 12 et 13.
Donc si $i va de 0 à 5 çà donne bien :
$anomalie[0] -> .
$anomalie[1] -> ..
$anomalie[2] ->
$anomalie[3] ->
$anomalie[4] ->
$anomalie[5] ->
Conclusion, utiliser print_r() pour voir la structure réelle d'un tableau quand on ne comprends pas ce qui se passe.
Bien mettre entre <pre> et </pre> car print_r génère des retour chariot et non pas des <br>.
Marsh Posté le 24-10-2003 à 15:15:41
Bon, ben grilled quoi !
end() et key(), c'est joli, mais je préfère foreach(), surtout si les indices ne sont pas numériques.
Marsh Posté le 24-10-2003 à 15:36:19
lol ! clair t'es grillé la !
merci de t'etre penche la dessus tu as du vraiment bossé pour ca !!
sinon pour tes remarques :
1 - mouais ok
2 - OK
3 - c'est ce que j'avais dis .
MERCI MERCI pour le foreach($tab as $val) {} , ca déchire !!
Merci , a+
Marsh Posté le 23-10-2003 à 10:57:12
Salut !
j'ai deux tableaux et j'aimerai isoler les éléments qui ne sont pas commun à ces 2 tableaux (élément présent dans l'un mais pas dans l'autre).
D'après vous c'est quoi le meilleur algo pour faire ca ?
Merci