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 :

Mélanger un tableau, avec exceptions


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut Mélanger un tableau, avec exceptions
    Bonjour,

    J'ai un problème pour créer ma fonction Je voudrais qu'elle mélange mon tableau associatif sauf certains éléments (que l'on précisera dans la fonction).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $foo = array(
    	'A' => 'Aout',
    	'B' => 'Bonjour',
    	'C' => 'Course',
    	'D' => 'Depart',
    	'E' => 'Ecole'
    );
     
    $foo = array_shuffle($foo, array('D'));
     
    /* Retournera ceci :
    $foo = array(
    	'C' => 'Course',
    	'A' => 'Aout',
    	'E' => 'Ecole',
    	'D' => 'Depart',
    	'B' => 'Bonjour'
    );
    */
    Ici tout mon tableau est mélanger, sauf l'élément 'D'.
    J'ai essayé à plusieurs reprise de créer cette fonction, mais en vain.

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Enlève l'élément de ton tableau, mélange le tableau et remet l'élément.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Oui mais comment faire pour que les éléments non mélangé retrouvent leur positions initiales ? Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tout depend de la facon dont tu veux mélanger.
    S'agit-il de changer l'ordre des élements ou de brasser les clefs ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Il s'agit de changer l'ordre des éléments, sans brasser les clefs.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Array
    (
        [0] => Array
            (
                [numero] => 1
                [couleur] => Rouge
            )
     
        [1] => Array
            (
                [numero] => 2
                [couleur] => Vert
            )
     
        [2] => Array
            (
                [numero] => 3
                [couleur] => Bleu
            )
     
        [3] => Array
            (
                [numero] => 4
                [couleur] => Jaune
            )
     
    )
    Si je demande de mélanger tous les éléments du tableau, sauf le rouge et le bleu, le résultat devra être par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Array
    (
        [0] => Array
            (
                [numero] => 1
                [couleur] => Rouge
            )
     
        [1] => Array
            (
                [numero] => 4
                [couleur] => Jaune
            )
     
        [2] => Array
            (
                [numero] => 3
                [couleur] => Bleu
            )
     
        [3] => Array
     
            (
                [numero] => 2
                [couleur] => Vert
            )
     
    )
    Je n'arrive pas à obtenir ce résultat.
    Merci en tout cas de d’être penché sur mon problème.

    EDIT : Bon je n'arrive vraiment pas, un vrai casse-tete cette histoire!

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Y'a peut etre plus optimisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $tab = array(0=>"rouge", 1=>"vert", 2=>"bleu", 3=>"jaune",4=>"violet");
     
    $exclus = array(0,2);
     
    $inclus = array_diff(array_keys($tab), $exclus);
     
    foreach($tab as $key=>$value) {
        if (!in_array($key, $exclus)) {
            $rand = array_rand($inclus);
            $new_key = $inclus[$rand];
            unset($inclus[$rand]);
        }
        else {
              $new_key = $key;
        }
        $new_tab[$new_key] = $value;
    }
     
    print_r ($new_tab);

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Merci c'est ce que je voulais, je vais essayer de comprendre un peu mieux comment tu as fait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. tableau avec 1 colonne sur 3 sans cadre
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/04/2005, 17h44
  3. balise <img> dans un tableau avec firefox
    Par yannock dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/10/2004, 16h44
  4. pb de coord de tex dans tableau avec multitex
    Par sebh dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/01/2004, 21h36
  5. Réponses: 13
    Dernier message: 14/10/2003, 14h31

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