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 :

Algorithmique - Parcours et modification d'un tableau de données


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Par défaut Algorithmique - Parcours et modification d'un tableau de données
    Bonjour à tous,

    Voici mon problème (problème d'algo sur lequel je sèche lamentablement depuis une bonne heure).
    Je dispose du tableau suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Array
    (
        [0] => Array
            ([status] => 4|NOMELEVE1)
        [1] => Array
            ([status] => 6|NOMELEVE2)
        [2] => Array
            ([status] => 7|NOMELEVE2)
        [3] => Array
            ([status] => 8|NOMELEVE3)
    )
    Et je voudrais que ce tableau devienne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Array
    (
        [NOMELEVE1] => Array
            ([0] => 4, [1] => 0)
        [NOMELEVE2] => Array
            ([0] => 6, [1] => 7)
        [NOMELEVE3] => Array
            ([0] => 8, [1] => 0)
    )
    J'espère que mon exemple est suffisamment clair. En gros, sur chaque élève, je voudrais créer des paires. Quand je n'ai pas le 2ème élément de la paire, je voudrais mettre 0.
    Je fais appel à vous car j'aimerai éviter de faire le bourrin (avec double voire triple boucle).

    Merci beaucoup pour votre aide

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 018
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 018
    Par défaut
    Je pense pas qu'on puisse faire ça en moins de deux boucles:
    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
    $arr = [
        ['status' => '4|NOMELEVE1'],
        ['status' => '6|NOMELEVE2'],
        ['status' => '7|NOMELEVE2'],
        ['status' => '8|NOMELEVE3'],
    ];
     
    $result = [];
     
    foreach ($arr as $item) {
        list($v, $name) = explode('|', $item['status']);
        $result[$name][] = $v;
    }
     
    foreach ($result as &$item) {
        $item = array_pad($item, 2, 0);
    }

  3. #3
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Ma contribution.

    Code php : 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
     
    <?php
    $a  = array();
    $a[] = Array('status' => "4|NOMELEVE1");
    $a[] = Array('status' => "6|NOMELEVE2");
    $a[] = Array('status' => "7|NOMELEVE2");
    $a[] = Array('status' => "8|NOMELEVE3");
     
     
    $r   = array();
    foreach($a as $sousTableau) {
     foreach ($sousTableau as $valeur) {
      $liste = explode('|',$valeur);
      if (!isset($r[$liste[1]])) $r[$liste[1]] = array();
      $r[$liste[1]][] = $liste[0];
     }
    }
    foreach($r as &$sousTableau) {
     
     if (count($sousTableau) == 1) $sousTableau[] = "0";
    }
    print_r($r);

    Code php : 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
     
    Array
    (
        [NOMELEVE1] => Array
            (
                [0] => 4
                [1] => 0
            )
        [NOMELEVE2] => Array
            (
                [0] => 6
                [1] => 7
            )
        [NOMELEVE3] => Array
            (
                [0] => 8
                [1] => 0
            )
    )

Discussions similaires

  1. [Tableaux] Faire un tableau à cases variables
    Par Ludo75 dans le forum Langage
    Réponses: 2
    Dernier message: 19/11/2006, 19h14
  2. Réponses: 5
    Dernier message: 26/08/2006, 12h14
  3. [Tableaux] Faire un tableau en BBCode
    Par Oberown dans le forum Langage
    Réponses: 7
    Dernier message: 03/08/2006, 09h36
  4. [Tableaux] Faire un tableau de <input>
    Par Death83 dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2006, 20h02
  5. VB6: Comment faire un tableau de tableaux ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 10/11/2005, 22h57

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