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:
Voici mon script:
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;
Et voici ce que me retourne mon navigateur :
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' } }
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...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
...
Et bien évidemment, la ligne "nombre de documents dans le tableau : " ne retourne rien...
Merci de votre aide
Partager