Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2908 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  problème avec array();

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec array();

n°470366
Kt-Redfox
Posté le 29-07-2003 à 00:21:40  profilanswer
 

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!

mood
Publicité
Posté le 29-07-2003 à 00:21:40  profilanswer
 

n°470375
Mr yvele
yvele n'est plus.
Posté le 29-07-2003 à 00:43:35  profilanswer
 

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.
n°470387
Kt-Redfox
Posté le 29-07-2003 à 00:59:26  profilanswer
 

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

n°470393
burgergold
5$? va chez l'diable!
Posté le 29-07-2003 à 01:13:06  profilanswer
 

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


---------------
http://www.boincstats.com/signature/user_664861.gif
n°470394
Kt-Redfox
Posté le 29-07-2003 à 01:15:40  profilanswer
 

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

n°470409
Mara's dad
Yes I can !
Posté le 29-07-2003 à 02:10:26  profilanswer
 

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é.
n°470410
Kt-Redfox
Posté le 29-07-2003 à 02:14:24  profilanswer
 

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

n°470417
Mara's dad
Yes I can !
Posté le 29-07-2003 à 02:17:52  profilanswer
 

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é.
n°470418
Kt-Redfox
Posté le 29-07-2003 à 02:23:18  profilanswer
 

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...

n°470420
Mara's dad
Yes I can !
Posté le 29-07-2003 à 02:31:00  profilanswer
 

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é.
mood
Publicité
Posté le 29-07-2003 à 02:31:00  profilanswer
 

n°503451
Kt-Redfox
Posté le 31-08-2003 à 18:44:08  profilanswer
 

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 :/

n°503653
Kt-Redfox
Posté le 31-08-2003 à 23:19:58  profilanswer
 

up  :cry:

n°503677
ffluff
Challenge Everything
Posté le 01-09-2003 à 00:01:07  profilanswer
 

$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
n°503682
Kt-Redfox
Posté le 01-09-2003 à 00:13:54  profilanswer
 

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
n°503687
Kt-Redfox
Posté le 01-09-2003 à 00:24:41  profilanswer
 

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]

n°503710
ffluff
Challenge Everything
Posté le 01-09-2003 à 02:34:15  profilanswer
 

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.

n°504184
Kt-Redfox
Posté le 01-09-2003 à 14:44:58  profilanswer
 

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 :(

n°506779
Kt-Redfox
Posté le 03-09-2003 à 20:51:33  profilanswer
 

up  :D

n°506794
omega2
Posté le 03-09-2003 à 21:26:47  profilanswer
 

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. ;)

n°506845
Kt-Redfox
Posté le 03-09-2003 à 22:16:16  profilanswer
 

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:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  problème avec array();

 

Sujets relatifs
Probleme de config Apache (recup variable)Gros problème de lenteur inexplicable :(
Problème avec une Extension Shell Windowsproblème de fichier .htaccess
Problème en upgradant à mysql 4.0.14![C]Probleme de char et string
Probleme avec mon fichier .htaccess[MYSQL] Probleme avec la commande LOAD DATA LOCAL INFILE...
Probleme avec array_diff[PHP] Problème avec Array_push / Array_merge
Plus de sujets relatifs à : problème avec array();


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR