Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2006, 22h42   #1
Membre à l'essai
 
Inscription : février 2003
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 76
Points : 22
Points : 22
Par défaut tableaux dynamiques ds des boucles FOR imbriquees

Bonsoir tout le monde

je comprends pas du tout d' ou vient mon probleme. le script est simple.

je vous explique le concept

- lister les fichiers d' un repertoire >> pas de probleme
- executer certaines actions ds une boucle for en fonction du nbre de fichiers

Je ne vous mets que la boucle for, la premiere partie du script ne pose aucun probleme.

ce que je veux faire:
creer pour chaque fichier présent ds le repertoire 4 tableaux.
le nom de chacun de ces tableaux est générique:
1° tableau= $tableau_fichier_source[$i] >> doit contenir tout le fichier source
2° tableau= $tableau_fichier_source_entete[$i] >> doit contenir l' entete
3° tableau= $tableau_fichier_source_mvts[$i] >> doit contenir un nbre variable de L propre au fichier
4° tableau= $tableau_fichier_source_resultat[$i] >> doit contenir une seule L

tout se passe au niveau de la creation de ces tableaux et/ou de la seconde boucle FOR (imbriquée ds la 1°).
je ne sais pas si je nomme correctement mes tableaux MAIS ds la seconde boucle FOR, je remplis mon 1° tableau et je l' affiche avec print_r (il me l' affiche autant de fois qu' il y a de L ds le fichier (normal).
Par contre lorsuqe je réitere l' operation pour remplir mes 2°, 3° et 4° tableaux, là il m' affiche des valeurs telles: 'A' ou 'Array()'

pourriez vous m' expliquer d' ou vient le probleme s' il vous plait.

Code :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
// # [PREMIERE BOUCLE FOR] ###############################################
	// BOUCLE QUI TRAVAILLE SUR TOUS LES FICHIERS PGN
	for($i= 0; $i< $nbre_fichiers; $i++) {
 
		// ouverture de chacun des fichiers en lecture seule
		// je rajoute 1 car le 1° fichier du repertoire débute à l' indice 1
		$fichier[$i]= "parties_pgn/partie_".($i+ 1).".pgn";
 
		// test d' existence des fichiers
		if(file_exists($fichier[$i])) {
 
			// ouverture de chaque fichier pgn
			$fichier_ouvert[$i]= fopen($fichier[$i], "r");
 
			// lecture de chaque fichier pgn
			$fichier_lecture[$i]= file($fichier[$i]);
 
			// on compte les L de chacun des fichiers pgn
			$fichier_nbre_L[$i]= count($fichier_lecture[$i]);
			echo '<br>'.$fichier[$i].' possede: '.$fichier_nbre_L[$i].' lignes. <br>';
 
			// on cree 1 tableau pour chacun des fichiers sources
			// but:
			// contenir tout le fichier source
			$tab_fichier_source[$i]= array();
 
 
			// on cree 3 tableaux pour chacun des fichiers sources
			// EN DEHORS DE LA DEUXIEME BOUCLE FOR POUR POUVOIR Y ACCEDER
			// but:
			// $tab_fichier_source_entete[$i]	>> pour stocker les L débutant par "["
			// $tab_fichier_source_mvts[$i]		>> pour stocker la liste des mvts des 2 joueurs
			// $tab_fichier_source_resultat[$i]	>> pour stocker le resultat de la partie
			$tab_fichier_source_entete[$i]= array();
			$tab_fichier_source_mvts[$i]= array();
			$tab_fichier_source_resultat[$i]= array();
 
			for($j= 0; $j< $fichier_nbre_L[$i]; $j++) {
				// on stocke chacune des L de chacun des fichiers pgn
				// ds le $tab_fichier_source[$i] prevu à cet effet
				array_push($tab_fichier_source[$i], $fichier_lecture[$i]);
 
				// 1) >> définition de la recherche qui porte sur le 1° caractere de chaque L de chaque fichier pgn
				$recherche[$j]= substr($tab_fichier_source[$i], 0, 1);
				//echo $recherche[$j];
 
				// tests d' égalité
				if($recherche[$j]=== "[") {
					array_push($tab_fichier_source_entete[$i], $tab_fichier[$i]);
				}/*
				else if($recherche[$i]!= "[" && $recherche[$i]!= "{" && $recherche[$i]!= "\n") {
					array_push($tab_fichier_source_mvts[$i], $tab_fichier_source[$i]);
				}
				else if($recherche[$i]=== "{") {
					array_push($tab_fichier_source_resultat[$i], $tab_fichier_source[$i]);
				}*/
			}
		}
	}
	// # [/ PREMIERE BOUCLE FOR] ###########################################
Merci bien pour l' aide
areuh_fr
__________________
longue vie aux forums
areuh_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 09h33   #2
Membre à l'essai
 
Inscription : février 2003
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 76
Points : 22
Points : 22
salut,

bon j' ai trouvé,

en fait c' etait au niveau de ce que j' ajoutais.

voilà la bonne instruction
array_push($tab_fichier_source[$i], $fichier_lecture[$i][$j]);

et voilà la définiton de le recherche
$recherche[$i][$j]= substr($tab_fichier_source[$i][$j], 0, 1);

je vous dis a plus tard.
areuh_fr
__________________
longue vie aux forums
areuh_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 11h12   #3
Membre à l'essai
 
Inscription : février 2003
Messages : 76
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 76
Points : 22
Points : 22
euh désolé mais y' a un truc que je capte pas

je remets le code corrigé

Code :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
// # [PREMIERE BOUCLE FOR] ###############################################
	// BOUCLE QUI TRAVAILLE SUR TOUS LES FICHIERS PGN
	for($i= 0; $i< $nbre_fichiers; $i++) {
 
		// ouverture de chacun des fichiers en lecture seule
		// je rajoute 1 car le 1° fichier du repertoire débute à l' indice 1
		$fichier[$i]= "parties_pgn/partie_".($i+ 1).".pgn";
 
		// test d' existence des fichiers
		if(file_exists($fichier[$i])) {
 
			// ouverture de chaque fichier pgn
			$fichier_ouvert[$i]= fopen($fichier[$i], "r");
 
			// lecture de chaque fichier pgn
			$fichier_lecture[$i]= file($fichier[$i]);
 
			// on compte les L de chacun des fichiers pgn
			$fichier_nbre_L[$i]= count($fichier_lecture[$i]);
			echo '<br>'.$fichier[$i].' possede: '.$fichier_nbre_L[$i].' lignes. <br>';
 
			// on cree 1 tableau pour chacun des fichiers sources
			// but:
			// contenir tout le fichier source
			$tab_fichier_source[$i]= array();
 
 
			// on cree 3 tableaux pour chacun des fichiers sources
			// EN DEHORS DE LA DEUXIEME BOUCLE FOR POUR POUVOIR Y ACCEDER
			// but:
			// $tab_fichier_source_entete[$i]	>> pour stocker les L débutant par "["
			// $tab_fichier_source_mvts[$i]		>> pour stocker la liste des mvts des 2 joueurs
			// $tab_fichier_source_resultat[$i]	>> pour stocker le resultat de la partie
			$tab_fichier_source_entete[$i]= array();
			$tab_fichier_source_mvts[$i]= array();
			$tab_fichier_source_resultat[$i]= array();
 
			for($j= 0; $j< $fichier_nbre_L[$i]; $j++) {
				// on stocke chacune des L de chacun des fichiers pgn
				// ds le $tab_fichier_source[$i] prevu à cet effet
				array_push($tab_fichier_source[$i], $fichier_lecture[$i][$j]);
				// echo $tab_fichier_source[$i][$j].'<br>';
 
				// 1) >> définition de la recherche qui porte sur le 1° caractere de chaque L de chaque fichier pgn
				$recherche[$i][$j]= substr($tab_fichier_source[$i][$j], 0, 1);
				// echo $recherche[$i][$j];
 
				// tests d' égalité				
				if($recherche[$i][$j]=== "[") {
					array_push($tab_fichier_source_entete[$i], $tab_fichier_source[$i][$j]);
					  // echo $tab_fichier_source_entete[$i][$j].'<br>';
				}
 
				else if($recherche[$i][$j]!= "[" && $recherche[$i][$j]!= "{" && $recherche[$i][$j]!= "\n") {
					array_push($tab_fichier_source_mvts[$i], $tab_fichier_source[$i][$j]);
					// N AFFICHE RIEN MAIS LES VALEURS ST BIEN ENREGISTREES
					// echo $tab_fichier_source_mvts[$i][$j].'<br>';
 
				}
 
				 else if($recherche[$i][$j]=== "{") {
					array_push($tab_fichier_source_resultat[$i], $tab_fichier_source[$i][$j]);
					// N AFFICHE RIEN MAIS LA VALEUR EST BIEN ENREGISTREE
					// echo $tab_fichier_source_resultat[$i][$j].'<br>';
				}
			} // print_r(array_values($tab_fichier_source_mvts[$i]));
		}
	}
	// # [/ PREMIERE BOUCLE FOR] ###########################################
toujours ds la seconde boucle FOR.
C' est au niveau de l' affichage que je foire.
Le 1° array_push fonctionne, son echo aussi.

Les 2 autres array_push fonctionnent mais pas leur echo respectif, par contre print_r(array_values)) fonctionne lui.

Vous pouvez m' expliquer SVP

je vais enlever le tag résolu temporairement

Merci
areuh_fr
__________________
longue vie aux forums
areuh_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h44.


 
 
 
 
Partenaires

Hébergement Web