problème avec array();

problème avec array(); - PHP - Programmation

Marsh Posté le 29-07-2003 à 00:21:40    

Hello,
J'ai un tableau de valeur a deux dimensions de telle manière:
 

Code :
  1. $var[x][y];


ou x va de 1 a 10 et y de 1 à 20.
Cet array a quasiment tout le temps les mêmes valeurs sauf dans des cas précis. Comment définir lorsque je crée l'array que $var[x][y] sera égal à "test"?????? Pour l'instant, je fais une boucle for mais c'est plutot lourd.
Merci de m'aider!

Reply

Marsh Posté le 29-07-2003 à 00:21:40   

Reply

Marsh Posté le 29-07-2003 à 00:43:35    

KT-RedFOX a écrit :

je fais une boucle for mais c'est plutot lourd.


 
 :heink:  
A ce que j'ai compris, t'es obligé de scanner tout le tableau jusqu'a ce que tu trouves "test".. donc t'es obligé d'utiliser une boucle..  donc ce qui est le plus approprié c'est une bonne vieille boucle for
 
et si t'aimes pas les boucles for, ben fait des boucles while (ou bourrine avec eval :D )


Message édité par Mr yvele le 29-07-2003 à 00:44:03

---------------
yvele n'est plus.
Reply

Marsh Posté le 29-07-2003 à 00:59:26    

j'réexplique c vrai que je me suis mal exprimé.
J'ai donc mon tableau de valeur $var[x][y];
J'ai:


$var[1][1]="test";
$var[1][2]="test";
.....
$var[10][20]="test";


Donc là pour que $var[1][1] à $var[10][20] ai la valeur "test"; je fais:
 

Code :
  1. for($i=1;$i<=10;$i++)
  2. {
  3. for($j=1;$j<=20;$j++)
  4. {
  5. $var[$i][$j]="test";
  6. }
  7. }


soit deux for imbriqués,ce qui est très lourd :p
ce serait plus simple si direct je pouvais dire que $var[1][1] à $var[10][20] ai la valeur "test" sans faire mes deux boucles for :D

Reply

Marsh Posté le 29-07-2003 à 01:13:06    

tu veux initialisé tout champs de ton array à la meme valeur, c ca?


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 29-07-2003 à 01:15:40    

burgergold a écrit :

tu veux initialisé tout champs de ton array à la meme valeur, c ca?


vala  :D  
j'espère que c'est possible :p

Reply

Marsh Posté le 29-07-2003 à 02:10:26    

Code :
  1. $var= array_fill( 1, 10, array_fill( 1, 20, "test" ) );


 
Ca vous arrive de lire la doc ?
 
http://www.php.net/manual/en/function.array-fill.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-07-2003 à 02:14:24    

Mara's dad a écrit :

Code :
  1. $var= array_fill( 1, 10, array_fill( 1, 20, "test" ) );


 
Ca vous arrive de lire la doc ?
 
http://www.php.net/manual/en/function.array-fill.php


merci, lire la doc sans connaitre le nom de la fonction c'est pas terrible, y'en a tellement des fonctions pour manipuler les array().
Cependant, merci beaucoup! :D

Reply

Marsh Posté le 29-07-2003 à 02:17:52    

Mouais, je l'ai trouvée comment moi ?
 
Array_fill est la 7ème dans la liste des fonction array_*
 
Elles ont quand même des noms assez explicites dans l'ensemble si on sait lire l'English.


Message édité par Mara's dad le 29-07-2003 à 02:19:30

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-07-2003 à 02:23:18    

Mara's dad a écrit :

Mouais, je l'ai trouvée comment moi ?
 
Array_fill est la 7ème dans la liste des fonction array_*
 
Elles ont quand même des noms assez explicites dans l'ensemble si on sait lire l'English.


et j'aurais trouvé comment tout seul la technique des array_fill imbriqués??  :D  
Enfin...

Reply

Marsh Posté le 29-07-2003 à 02:31:00    

KT-RedFOX a écrit :


et j'aurais trouvé comment tout seul la technique des array_fill imbriqués??  :D  
Enfin...


Ben pour les tableaux en PHP, le truc à bien comprendre, c'est que c'est pas des tableaux !
 
Faut plus les comprendre comme des listes chaînées.
Chaque cellule a un indice qui peut être numérique ou alphanumérique (ou les deux) et la valeur peut être de n'importe quelle type.
 
Dans ton exemple, tu as un tableau de 10 élément dont chaque élément est un tableau de 20 éléments.
quand on comprend çà, il suffit de lire la définition de array_fill !
 
array array_fill ( int start_index, int num, mixed value)
 
start_index : Index de début
num : Nombre de cellule
value : Valeur de la cellule.
 
Pour le premier indice, value est un tableau...
Mais bon là je pense que t'as compris :D  


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-07-2003 à 02:31:00   

Reply

Marsh Posté le 31-08-2003 à 18:44:08    

je reup le topic car j'ai une question:
Il n'y a pas une fonction qui ferait un remplacement dans un Array? Une fonction qui marcherait comme array_fill(), c'est à dire qu'on défini la valeur de départ et le nombre de valeurs qu'on veut replacer.
Exemple:
je fait:

Code :
  1. $var= array_fill(1,1000,"pouet" );


Je veux remplacer les valeurs entre 500 et 600 par "youpi" j'utilise donc ma fonction magique:

Code :
  1. $var = array_bidule(500,100,"youpi" );


Car là pour remplacer une valeur je fait:
$var[int] = "truc"
mais si je dois remplacer 100 valeurs, je fait une boucle for et c'est relativement lourd :/

Reply

Marsh Posté le 31-08-2003 à 23:19:58    

up  :cry:

Reply

Marsh Posté le 01-09-2003 à 00:01:07    

$tmp1=array_slice($tontableaupouet,0,500);
$tmp2=array_slice($tontableaupouet,600); // sans la taille ca vas jusqu'a la fin du tableau
 
$result = array_merge($tmp1,array_fill(1,100,"youpi" ),$tmp2);
 
 
edit: j'ai dis une grosse connerie :p
edit2: y a des chances pour que ca marche :)
 
 
P: array_slice decoupe un tableau:
array array_slice($tableau,$debut[,$nb_cellule]);


Message édité par ffluff le 01-09-2003 à 00:07:06
Reply

Marsh Posté le 01-09-2003 à 00:13:54    

fFluFf a écrit :

$tmp1=array_slice($tontableaupouet,0,500);
$tmp2=array_slice($tontableaupouet,600); // sans la taille ca vas jusqu'a la fin du tableau
 
$result = array_merge($tmp1,array_fill(1,100,"youpi" ),$tmp2);
 
 
edit: j'ai dis une grosse connerie :p
edit2: y a des chances pour que ca marche :)
 
 
P: array_slice decoupe un tableau:
array array_slice($tableau,$debut[,$nb_cellule]);


merci!!!!
je vais voir si ca marche :D
 
edit: ca fonctionne nickel ;)
J'ai plus qu'a adapter ça pour mon tableau à deux dimensions! :'(
A ton avis, ca bouffera moins de CPU que la boucle for() ?


Message édité par Kt-Redfox le 01-09-2003 à 00:18:14
Reply

Marsh Posté le 01-09-2003 à 00:24:41    

ils sont chiants quand même, ils auraient pu coder une fonction array_replace qui fait ce que je veux :O Y'a intérêt que ce soit dans PHP5 :O  [:ddr555]

Reply

Marsh Posté le 01-09-2003 à 02:34:15    

KT-RedFOX a écrit :


merci!!!!
je vais voir si ca marche :D
 
edit: ca fonctionne nickel ;)
J'ai plus qu'a adapter ça pour mon tableau à deux dimensions! :'(
A ton avis, ca bouffera moins de CPU que la boucle for() ?


y des chances.
On(je sait plus qui) m'avit dis qu'il vallait mieux utilisé les fonctions PHP que utiliser des fonctions personnelles qui font la meme chose.
 
Maintenant ce depends du nombre d'éléments à remplacer.
Si tu remplace 3 elements vaut meiux ne pas utiliser cette technique et encore moins un for ;)
 
Maintenant le mieux qu'il te reste à faire c'est de tester avec les 2 méthodes et voir la quelle est la plus rapide.

Reply

Marsh Posté le 01-09-2003 à 14:44:58    

je bloque complètement sur l'adaptation du code pour un tableau à deux dimensions :(
Je me doute qu'il faut imbriquer les fonctions comme avec array_fill() mais mes essais ont tous foirés :(

Reply

Marsh Posté le 03-09-2003 à 20:51:33    

up  :D

Reply

Marsh Posté le 03-09-2003 à 21:26:47    

Un tableau à deux dimensions, c'est un tableau de tableau.
Tu fais ton array_fill() sur le tableau extérieur et ensuite, t'en fais un pour chaque case du tableau exterieur que t'as obtenus. Tu traite le résultat de ton second array_fil , tu recré ton tableau interne puis tu remontes d'un cran.
Quand t'as passé tout les résultats, tu recré le tableau total.
 
Voilà pour l'algorithme. ;)

Reply

Marsh Posté le 03-09-2003 à 22:16:16    

omega2 a écrit :

Un tableau à deux dimensions, c'est un tableau de tableau.
Tu fais ton array_fill() sur le tableau extérieur et ensuite, t'en fais un pour chaque case du tableau exterieur que t'as obtenus. Tu traite le résultat de ton second array_fil , tu recré ton tableau interne puis tu remontes d'un cran.
Quand t'as passé tout les résultats, tu recré le tableau total.
 
Voilà pour l'algorithme. ;)


d'ac merci de m'avoir mis sur la voie  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed