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 :

[Tableaux] array_unique() pas suffisant


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut [Tableaux] array_unique() pas suffisant
    Salut à tous,

    J'ai deux tableaux:

    array(1, 2, 3, 4, 5) (les valeurs sont uniques)
    array(10, 20, 10, 10, 30) (les valeurs ne sont pas forcément uniques)

    J'aimerai avoir comme valeur de retour
    array(array(1, 4, 5) => 10, 2 => 20, 5 => 30)

    J'ai commencé un code, mais j'aimerai éviter le compliqué: j'ai l'impression d'avoir trop de boucles, de tableaux subsidiaires...

    Comment faire?
    Merci

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Il y a peut-être plus simple,
    mais voici ma solution :
    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 
    $indices = array(1, 2, 3, 4, 5);
    $valeurs = array(10, 20, 10, 10, 30);
    $uniques = array_unique($valeurs);
     
    $resultat=array();
     
    foreach ($uniques as $un) {
    	$liste=array();
    	foreach ($valeurs as $cle => $val) {
    		if ($val==$un) {
    			$liste[] = $indices[$cle];
    		}
    	}
    	$resultat[]=array($liste,$un);
    }
     
    echo "<pre>";
    var_dump($resultat);
    echo "</pre>";
    Fred

  3. #3
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    pour appliquer des fonctions à des arrays multiples, utilise array_map()

    Exemple pour ton problème :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    /* VARIABLES */
    $arr1 = array(1, 2, 3, 4, 5);
    $arr2 = array(10, 20, 10, 10, 30);
    $array = array($arr1, $arr2);
     
    /* CODE */
    $array = array_map('array_unique', $array);
    /* */
     
    echo "<pre>";
    print_r($array);
    echo "</pre>";
    /* RETOURNE
    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
                [3] => 4
                [4] => 5
            )
    
        [1] => Array
            (
                [0] => 10
                [1] => 20
                [4] => 30
            )
    
    )
    
    */
    ?>

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Merci à vous deux, je vais essayer le code de micetf, et voir comment compléter le tiens.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/05/2007, 11h02
  2. Réponses: 23
    Dernier message: 21/12/2006, 22h47
  3. [Tableaux] Boucle pas prise en compte
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 27/08/2006, 16h31
  4. [Tableaux] Array_unique et tableau 2 dimensions
    Par rdams dans le forum Langage
    Réponses: 5
    Dernier message: 30/06/2006, 09h35
  5. [Tableaux] echo pas adéquate :(
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2006, 11h38

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