problème avec array(); - PHP - Programmation
Marsh Posté le 29-07-2003 à 00:43:35
KT-RedFOX a écrit : je fais une boucle for mais c'est plutot lourd. |
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 )
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:
|
Donc là pour que $var[1][1] à $var[10][20] ai la valeur "test"; je fais:
Code :
|
soit deux for imbriqués,ce qui est très lourd
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
Marsh Posté le 29-07-2003 à 01:13:06
tu veux initialisé tout champs de ton array à la meme valeur, c ca?
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
j'espère que c'est possible
Marsh Posté le 29-07-2003 à 02:10:26
Code :
|
Ca vous arrive de lire la doc ?
http://www.php.net/manual/en/function.array-fill.php
Marsh Posté le 29-07-2003 à 02:14:24
Mara's dad a écrit :
|
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!
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.
Marsh Posté le 29-07-2003 à 02:23:18
Mara's dad a écrit : Mouais, je l'ai trouvée comment moi ? |
et j'aurais trouvé comment tout seul la technique des array_fill imbriqués??
Enfin...
Marsh Posté le 29-07-2003 à 02:31:00
KT-RedFOX a écrit : |
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
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 :
|
Je veux remplacer les valeurs entre 500 et 600 par "youpi" j'utilise donc ma fonction magique:
Code :
|
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
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
edit2: y a des chances pour que ca marche
P: array_slice decoupe un tableau:
array array_slice($tableau,$debut[,$nb_cellule]);
Marsh Posté le 01-09-2003 à 00:13:54
fFluFf a écrit : $tmp1=array_slice($tontableaupouet,0,500); |
merci!!!!
je vais voir si ca marche
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() ?
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 Y'a intérêt que ce soit dans PHP5
Marsh Posté le 01-09-2003 à 02:34:15
KT-RedFOX a écrit : |
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.
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
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.
Marsh Posté le 03-09-2003 à 22:16:16
omega2 a écrit : Un tableau à deux dimensions, c'est un tableau de tableau. |
d'ac merci de m'avoir mis sur la voie
Marsh Posté le 29-07-2003 à 00:21:40
Hello,
J'ai un tableau de valeur a deux dimensions de telle manière:
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!