Page 1 sur 1

[Résolu] Utilisation de array_diff ?

Posté : 28 janv. 2012, 13:04
par Boro64
Bonjour
Je souhaite comparer 2 tableaux, et ne conserver que les valeurs du 1er qui ne soient pas dans le second; j'utilise donc array_diff.
Mais, sans doute n’ai je pas compris son utilisation car je n'obtiens pas ce que je souhaite; bien au contraire, puisque le nouveau tableau qui m'est renvoyé....est le 1er sans modification....
Le 1er tableau se présente ainsi:
Array
(
    [0] => le chat 

    [1] => la lune 

    [2] => la vache 

    [3] => la lune 

    [4] => la chose 

    [5] => le machin 

    [6] => le vélo

    [7] => la rivière 

    [8] => etc.

    [9] => etc.etc. 

    [10] => etc.etc. etc.

)
Le second contient une ou plusieurs valeurs et se présente ainsi:
Array
(
    [0] => la lune

    [1] => la rivière
)
et le code utilisé est le suivant:
$text_restant = array_diff($tab_textes_origin, $les_textes);
Je fais un print_r($text_restant); et j'obtiens:
Array
(
    [0] => le chat 

    [1] => la lune 

    [2] => la vache 

    [3] => la lune 

    [4] => la chose 

    [5] => le machin 

    [6] => le vélo

    [7] => la rivière 

    [8] => etc.

    [9] => etc.etc. 

    [10] => etc.etc. etc.

)
Soit, le 1er tableau inchangé...... :?
Or, ne devrais je pas obtenir ce tableau "diminué" des valeurs trouvées dans le second? (ce que je voudrai...)
Les valeurs renvoyées sont des chaînes de caractères dans les 2 cas, et il est possible que certaines chaînes soient identiques dans chacun des tableaux.
J'ai (bien?) lu la doc, et bien noté que:
Note:

Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.
Il me semble que c'est le cas, cependant les valeurs du 1er tableau sont issues d'un fichier en .txt dont je passe chaque ligne dans le-dit tableau.
Ceci pourrait il expliquer cela?
La solution que j'utilise est elle la bonne?
Merci d'avance pour vos avis, pistes, conseils, etc...

Re: Utilisation de array_diff ?

Posté : 28 janv. 2012, 13:47
par xTG
Des caractères de fin de ligne ou de retour à la ligne à mon avis. ;)
Vérifies en faisant un var_dump() de ton tableau, tu auras la longueur pour chaque chaîne, mais à mon avis tu as des caractères invisibles présents dans ton fichier texte (retour à la ligne, ect).
Tu peux utiliser strtr() pour supprimer ces caractères.

Re: Utilisation de array_diff ?

Posté : 28 janv. 2012, 15:05
par Boro64
Merci xTG =D>
Effectivement il y a des sauts de ligne.... :oops:
Merci de ton aide
Edit: J'ajoute ceci qui pourra peut être aider...?:
En plus des retour ligne, j'avais supprimé les espaces de début et fin de ligne ( fonction trim ) d'un côté...mais pas de l'autre.... :mrgreen: