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 multidimensionnels : création et parcours [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Points : 85
    Points
    85
    Par défaut Tableaux multidimensionnels : création et parcours
    Bonjour,

    J'ai un problème avec un tableau multidimentionnel que je n'arrive pas à alimenter. Je ne sais pas si ça vient de la façon dont je l'ai déclaré ou de la façon dont je l'alimente.

    Pour vous expliquer en gros mon application :
    Je récupère des informations dans des flux XML (nom et quantité).
    Je splitte le nom afin de trouver des correspondances entre les flux du répertoire que je parcours. Souvent les document s'appelle fichier_type1_00001, fichier_type1_00002, fichier_type2_00001... et donc je veux regrouper tous les fichier_type1 et les fichier_type2 et autres dans ce tableau multidimensionnel.
    La clé du tableau est le nom du type de fichier, la première valeur du sous-tableau correspond au nombre d'occurence de ce type de fichier rencontré, et la seconde valeur est la somme de la quantité contenu dans chaque flux de ce type.

    Lorsque je parcours les flux je vérifie :
    Si le tableau est vide (au premier passage par exemple), je veux l'alimenter avec les données du premier document.
    Puis, tant qu'il y a des informations dans le tableau, parcourir le tableau pour
    - soit s'il y a une correspondance : incrémenter de 1 le nombre d'occurences, et ajouter la quantité au total déjà présent,
    - soit s'il n'y a aucune correspondance, ajouter ce nouveau nom dans le tableau en clé, mettre 1 dans le nombre d'occurence et ajouter la quantité.

    Je crée donc un tableau de variables, et à chaque itération d'une boucle while, je souhaite que le tableau se redimensionne pour augmenter sa taille et accueillir de nouvelles données.

    Voici la déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $t_references[$v_nom_flux]["nb_occurences"] = $v_occurences;
    $t_references[$v_nom_flux]["nb_total_docs"] = $v_total_documents;
    Voici mon script:
    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
     
    if(key($t_references)== NULL ){ //le tableau est vide
      $v_occurences = 1;
      //ajouter le premier flux de données au tableau de références
      $t_references[$v_nom_flux] = $v_nom_court_flux;
      $t_references[$v_nom_flux]["nb_occurences"] = $v_occurences;//incrémenter 'Nombre de flux'
      //mouchards
      echo "nombre d'occurences : $v_occurences <br/>";
      echo "nombre de documents dans le tableau : ".array_values($t_references[$v_nom_flux]["nb_total_docs"])."<br/>";
      $t_references[$v_nom_flux]["nb_total_docs"] = $v_nb_docs;//ajouter 'Nb total de documents'
    }else{
      $v_index =  key($t_references); //récupère le nom du flux qui est la clé du tableau
      echo "$v_index";
      while($v_nom_flux = current($t_references)){
        if(strcasecmp($v_index, $v_nom_court_flux) == 0){
          echo "Présent dans le tableau <br/>";                         
          $t_references[$v_nom_flux]["nb_occurences"] = $v_occurences++; //incrémenter 'Nombre de flux'
          $t_references[$v_nom_flux]["nb_total_docs"] = $v_total_documents + $v_nb_docs; //calculer 'Nb total de documents'
        }else{
          echo "Pas présent dans le tableau <br/>";
          $v_compteur++;
        }
    }
    echo "compteur : $v_compteur";
    If($v_compteur > 0){
    //ajouter le flux de données à la fin du tableau de références
    $t_references[$v_nom_flux] = $v_nom_court_flux;
    $t_references[$v_nom_flux]["nb_occurences"] = $v_occurences++;//incrémenter 'Nombre de flux'
    $t_references[$v_nom_flux]["nb_total_docs"] = $v_nb_docs;//ajouter 'Nb total de documents'
    }
    }
    Et voici ce que me retourne mon navigateur :
    nom : fichier_blahblah_00001
    nombre : 1234
    nom court : fichier_blahblah
    Tableau +1
    nombre d'occurences : 1
    Warning: array_values() expects parameter 1 to be array, string given in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 114
    nombre de documents dans le tableau :
    détails : fichier_blahblah_00001 - 1234
    ...
    J'ai l'impression que mon tableau n'est pas alimenté car quand je tombe sur le même type de fichier, le script doit passer dans le else et écrire "tableau +2", et ce n'est jamais le cas...
    Et bien évidemment, la ligne "nombre de documents dans le tableau : " ne retourne rien...

    Merci de votre aide

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Points : 85
    Points
    85
    Par défaut
    J'ai trouvé la solution à mon problème, voici le scrpt, si ça peut aider quelqu'un, un jour!

    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
     
    while(FALSE != current($tableau)){
    //                 while(NULL != key($tableau)){
                         $v_index = key($tableau);
                         if(strcasecmp($v_index, $v_nom_court_flux) == 0){
                             $v_occurences = $v_occurences + 1;
                             $v_total_documents = $v_total_documents + $v_nb_docs;
                           //modifier un flux de données dans le tableau
                             $v_modification = array
                                                (
                                                    "nb_occurences" => $v_occurences,
                                                    "nb_total_docs" => $v_total_documents
                                                );
                             $t_references[key($tableau)] = $v_modification;
                             break;
                         }else{
                             $v_nom_flux = $v_nom_court_flux;
                             $v_total_documents = $v_nb_docs;
                           //ajouter le flux de données à la fin du tableau de références
                             $v_ajout = array
                                         (
                                            "nb_occurences" => 1,
                                            "nb_total_docs" => $v_total_documents
                                         );
                              $tableau["$v_nom_flux"]=$v_ajout;
                              next($tableau);
                         }break;
                     }

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

Discussions similaires

  1. AIDE sur Tableaux multidimensionnels
    Par orj30754 dans le forum C
    Réponses: 4
    Dernier message: 07/11/2006, 12h31
  2. Réponses: 4
    Dernier message: 31/08/2006, 16h31
  3. [Tableaux] Sauvegarde (création) d'une page HTML
    Par ythim dans le forum Langage
    Réponses: 9
    Dernier message: 22/06/2006, 14h45
  4. Réponses: 2
    Dernier message: 26/05/2006, 00h04
  5. Réponses: 5
    Dernier message: 24/12/2005, 15h40

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