IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Array merge et clé non copié


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Array merge et clé non copié
    Bonjour,
    Je souhaiterai effectuer un merge sur des tableau comportant parfois des array en valeur, mais array_merge ne semble pas fonctionner lorsque les valeur sont eux meme des array.
    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ar1 = array("color" => array("favorite" => "red", "uti1"=>array("pref1"=>"rouge claire","pref2"=>"rouge fonce")), 5); 	
    $ar2 = array(10, "color" => array("favorite" => "green", "blue","uti1=2"=>"vert"));  
    $result = array_merge($ar1, $ar2); 
    print_r($result);
    renvoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [color] => Array ( [favorite] => green [0] => blue [uti1=2] => vert ) [0] => 5 [1] => 10 )
    Le cle [util1], qui a un array pour valeur, n'est plus presente apres le merge, or elle n'est pas specifier dans le second arguement de array_merge, elle devrait etre conserver si j'ai bien compris ce que fait array_merge

    Une idée pour contourner cette limitation?

    Merci

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par takoha Voir le message
    Bonjour,
    Je souhaiterai effectuer un merge sur des tableau comportant parfois des array en valeur, mais array_merge ne semble pas fonctionner lorsque les valeur sont eux meme des array.
    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ar1 = array("color" => array("favorite" => "red", "uti1"=>array("pref1"=>"rouge claire","pref2"=>"rouge fonce")), 5); 	
    $ar2 = array(10, "color" => array("favorite" => "green", "blue","uti1=2"=>"vert"));  
    $result = array_merge($ar1, $ar2); 
    print_r($result);
    uti1=2 ça passe ?? peux tu essayé de modifier ?

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Salut,

    Si tu avais lu la doc tu aurais vu que la fonction array_merge si elle rencontre des clés associatives communes n'insère dans le tableau resultat que la dernière rencontré

    Si tu veux que la colone "color" contiennent toutes les valeurs rencontrés alors tu dois utilisé array_merge_recursive() et je viens de voir que tu as le meme exemple de valeurs que dans la doc ce que je trouve étrange

    @Thes32 : Pour ce qui est de la clé bizarre, il n'y pas de raison que cela ne fonctionne pas puisque c'est une chaine de caractère mais il est vrai que cela est surprenant

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Hello,
    Tu veux dire en supprimant le =?
    J'ai essayer mais ca passe pas non plus.

    C'est bizzare cette histoire je me demande si ca viendrais pas de la version php installé, mais en cherchant des exemple de array_merge je trouve nul part un exemple avec un array comme valeur

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    array_merge fonctionne très bien avec des arrays. le problème que tu rencontres est lié à l'écrasement des clés associatives comme je l'ai expliqué dans mon premier message

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    Salut,

    Si tu avais lu la doc tu aurais vu que la fonction array_merge si elle rencontre des clés associatives communes n'insère dans le tableau resultat que la dernière rencontré

    Si tu veux que la colone "color" contiennent toutes les valeurs rencontrés alors tu dois utilisé array_merge_recursive() et je viens de voir que tu as le meme exemple de valeurs que dans la doc ce que je trouve étrange

    @Thes32 : Pour ce qui est de la clé bizarre, il n'y pas de raison que cela ne fonctionne pas puisque c'est une chaine de caractère mais il est vrai que cela est surprenant
    Hello,

    Merci pour ta reponse.
    Effectivement c'est plus logique, j'avais mal compris.
    Donc array_merge ne convient pas dans mon cas.
    Le probleme avec array_merge_reccurcive est que je souhaiterai que la valeur soit ecraser sauf si c'est un array (et ainsi de suite dans le sous tableau)
    La cle bizzare est juste une faute de frappe

Discussions similaires

  1. Array merge, optimisé?
    Par macelfresh dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2012, 09h31
  2. Réponses: 4
    Dernier message: 13/02/2012, 11h48
  3. [Velocity & Hudson] Templates non copiés dans le classpath
    Par brisssou dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 31/08/2009, 15h40
  4. programme d'installation non copié
    Par LALANI dans le forum Windows XP
    Réponses: 0
    Dernier message: 23/07/2009, 10h37
  5. Publication : fichier de config log4net non copié :(
    Par postb99 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/03/2009, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo