Aller au contenu

Sujets conseillés

Posté

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

Posté

La solution la plus simple est probablement d'utiliser array_push:
/>http://uk.php.net/manual/en/function.array-push.php

Jacques.

Posté (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]: 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

Modifié par francoisch
Posté

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

Posté

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

Posté

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

Posté

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.

Posté

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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...