francoisch Posté 2 Mai 2011 Partager Posté 2 Mai 2011 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 3 Mai 2011 Partager Posté 3 Mai 2011 La solution la plus simple est probablement d'utiliser array_push:/>http://uk.php.net/manual/en/function.array-push.php Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 3 Mai 2011 Auteur Partager Posté 3 Mai 2011 (modifié) Merci encore une fois de ta réponse Jacques, je vais travailler avec ça. Francois -------------------------------------------------- Bonjour J’ai un tableau à deux dimensions, vide : $accesTot = array(array()); J’ai deux valeurs: myrow[1]: esp1myrow[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 Modifié 3 Mai 2011 par francoisch Lien vers le commentaire Partager sur d’autres sites More sharing options...
MarvinLeRouge Posté 4 Mai 2011 Partager Posté 4 Mai 2011 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). Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 4 Mai 2011 Partager Posté 4 Mai 2011 var_dump est ton ami pour voir ce que contient ton tableau (avant, après...). Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 4 Mai 2011 Auteur Partager Posté 4 Mai 2011 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: $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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
MarvinLeRouge Posté 4 Mai 2011 Partager Posté 4 Mai 2011 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". Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 4 Mai 2011 Partager Posté 4 Mai 2011 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 5 Mai 2011 Auteur Partager Posté 5 Mai 2011 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 6 Mai 2011 Auteur Partager Posté 6 Mai 2011 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant