Bonjour
Je veux écrire dans un tableau à deux dimensions ligne après ligne :
• le tableau est vide au début
• parfois j’écris une nouvelle ligne, parfois je complète une ligne existante
• la première colonne de chaque ligne est toujours remplie
Ma question : comment connaitre le rang de la dernière ligne existante pour écrire juste après ?
Par avance merci, je débute en tableaux.
Francois
Page 1 sur 1
Ajouter un ligne dans un tableau
#2
Posté 03 mai 2011 - 11:03
La solution la plus simple est probablement d'utiliser array_push:
http://uk.php.net/ma....array-push.php
Jacques.
http://uk.php.net/ma....array-push.php
Jacques.
#3
Posté 03 mai 2011 - 11:13
Merci encore une fois de ta réponse Jacques, je vais travailler avec ça.
Francois
--------------------------------------------------
Bonjour
J’ai un tableau à deux dimensions, vide :
J’ai deux valeurs:
que je voudrais placer dans une nouvelle ligne du tableau $accesTot.
Voila ce que j’ai essayé :
J'ai aussi essayé:
sans erreur mais sans résultat dans les deux cas, les cellules $accesTot[0][0] et $accesTot[0][1] ne sont pas initialisées.
Mon dernier essai:
ne fonctionne que s'il y a déjà un rang existant dans $accesTot.
Par avance merci de votre aide.
Francois
Francois
--------------------------------------------------
Bonjour
J’ai un tableau à deux dimensions, vide :
$accesTot = array(array());
J’ai deux valeurs:
myrow[1]: esp1 myrow[2]: 1
que je voudrais placer dans une nouvelle ligne du tableau $accesTot.
Voila ce que j’ai essayé :
$nouvelleLigne = array($myrow[1], $myrow[2]); array_push ($accesTot, $nouvelleLigne);
J'ai aussi essayé:
$nouvelleLigne = array(); array_push ($nouvelleLigne, $myrow[1], $myrow[2]); array_push ( $accesTot, $nouvelleLigne);
sans erreur mais sans résultat dans les deux cas, les cellules $accesTot[0][0] et $accesTot[0][1] ne sont pas initialisées.
Mon dernier essai:
$nouvelleLigne = array($myrow[1], $myrow[2]); $accesTot[] = $nouvelleLigne;
ne fonctionne que s'il y a déjà un rang existant dans $accesTot.
Par avance merci de votre aide.
Francois
Ce message a été modifié par francoisch - 03 mai 2011 - 21:10.
#4
Posté 04 mai 2011 - 16:39
Salut,
Je ne serais pas étonné que le pb vienne de la définition de ta variable : essaie en la définissant juste par $accesTot = array();
Après tout, c'est un tableau, php n'a pas besoin de savoir par avance ce que tu compte mettre à chaque ligne : que ce soit un entier, une chaine de caractères ou un tableau importe peu.
Et à partir de là, utilise la notion $accestot[] (plus facile, je trouve).
Je ne serais pas étonné que le pb vienne de la définition de ta variable : essaie en la définissant juste par $accesTot = array();
Après tout, c'est un tableau, php n'a pas besoin de savoir par avance ce que tu compte mettre à chaque ligne : que ce soit un entier, une chaine de caractères ou un tableau importe peu.
Et à partir de là, utilise la notion $accestot[] (plus facile, je trouve).
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
#6
Posté 04 mai 2011 - 20:59
bonjour et merci de vos réponses.
J'ai progressé dans l'intervale, j'ai trouvé plus simple d'écrire la première ligne du tableau de manière particulière avant d'écrire les autres lignes avec:
et ça fonctionne.
Mais j'ai maintenant un autre problème: je cherche à savoir si une valeur, contenu dans $myrow[1], existe déjà dans la première colonne de mon tableau à 2 dimensions $accesTot.
J'ai essayé avec:
mais je comprend que je nomme plutôt la première ligne du tableau alors que je voudrais nommer la première colonne.
Est-il possible de nommer la première colonne de $accesTot, tableau à 2 dimensions?
Par avance merci de votre aide.
A coté de ça, j'ai essaye var_dump() qui est effectivement utile pour tout afficher.
Francois
J'ai progressé dans l'intervale, j'ai trouvé plus simple d'écrire la première ligne du tableau de manière particulière avant d'écrire les autres lignes avec:
$nouvelleLigne = array($myrow[1], $myrow[2]); $accesTot[] = $nouvelleLigne;
et ça fonctionne.
Mais j'ai maintenant un autre problème: je cherche à savoir si une valeur, contenu dans $myrow[1], existe déjà dans la première colonne de mon tableau à 2 dimensions $accesTot.
J'ai essayé avec:
$rang = array_search($myrow[1], $accesTot[0]);
mais je comprend que je nomme plutôt la première ligne du tableau alors que je voudrais nommer la première colonne.
Est-il possible de nommer la première colonne de $accesTot, tableau à 2 dimensions?
Par avance merci de votre aide.
A coté de ça, j'ai essaye var_dump() qui est effectivement utile pour tout afficher.
Francois
#7
Posté 04 mai 2011 - 22:54
Francoisch, sauf erreur de ma part, il n'y a pas de tableau à n dimensions en php, il y a juste des tableaux à 1 dimension, qui peuvent éventuellement contenir des tableaux à chacune de leurs lignes (et pas forcément à toutes les lignes le même type de données, d'ailleurs). C'est pour ça que je te disais que ta syntaxe ne marchait pas; la doc php confirme bien que les paramètres passés à la création d'un tableau sont les valeurs qu'on souhaite y stocker.
Il n'y a donc pas de "colonne" à accéder directement en tant que telle, il faudra donc que tu parcoures ton tableau et que tu testes à chaque ligne si la colonne X de la ligne courante est égale à la valeur recherchée.
J'ai regardé la doc, et je ne vois malheureusement pas de fonction toute faite pour extraire automatiquement une "colonne".
Il n'y a donc pas de "colonne" à accéder directement en tant que telle, il faudra donc que tu parcoures ton tableau et que tu testes à chaque ligne si la colonne X de la ligne courante est égale à la valeur recherchée.
J'ai regardé la doc, et je ne vois malheureusement pas de fonction toute faite pour extraire automatiquement une "colonne".
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
#8
Posté 04 mai 2011 - 23:01
Si ta "colonne" est ta clef d'accès aux différentes lignes (i.e. c'est une valeur unique), alors le plus logique est d'utiliser un tableau associatif, i.e. $tableau[$clef]=$valeur ($valeur pouvant être un tableau si tu as besoin de stocker plusieurs "colonnes" pour chaque clef).
Jacques.
Jacques.
#9
Posté 05 mai 2011 - 09:55
bonjour et merci de vos réponses.
Oui, j'étais en train de comprendre qu'il n'y a pas de tableaux à n dimensions mais plutôt un tableau "maître" à une seule dimension dans lequel peuvent se trouver des tableaux "secondaires", à la façon des poupées russes.
Il faut donc parcourir tout pour vérifier la présence d'une valeur; il n'y a pas de "colonne" comme ce que je chechais.
Je vais regarder en détail les tableaux associatifs, que je ne connais pas.
Merci encore.
Francois
Oui, j'étais en train de comprendre qu'il n'y a pas de tableaux à n dimensions mais plutôt un tableau "maître" à une seule dimension dans lequel peuvent se trouver des tableaux "secondaires", à la façon des poupées russes.
Il faut donc parcourir tout pour vérifier la présence d'une valeur; il n'y a pas de "colonne" comme ce que je chechais.
Je vais regarder en détail les tableaux associatifs, que je ne connais pas.
Merci encore.
Francois
#10
Posté 06 mai 2011 - 13:07
bonjour
Pour savoir si j'avais déjà une ligne existante, en cherchant dans la valeur de "colonne " de chaque ligne, j'ai finalement fait une boucle de recherche sur cette position.
Je me procure le nombre de ligne de mon tableau 2 dimensions avec count() pour dimensionner la boucle.
Ca fonctionne maintenant, merci encore de votre aide, j'ai appris qqechose de nouveau encore une fois.
Francois
Pour savoir si j'avais déjà une ligne existante, en cherchant dans la valeur de "colonne " de chaque ligne, j'ai finalement fait une boucle de recherche sur cette position.
Je me procure le nombre de ligne de mon tableau 2 dimensions avec count() pour dimensionner la boucle.
Ca fonctionne maintenant, merci encore de votre aide, j'ai appris qqechose de nouveau encore une fois.
Francois
- ← Fonction switch sur les dossiers contenant certains caractères
- PHP
- Où rajouter mysql_free_result() dans ma class database ? →
Partager ce sujet :
Page 1 sur 1



Haut











