Page 1 sur 1

Tableaux : changer la position du pointeur

Posté : 10 sept. 2008, 13:25
par maheu
Bonjour à tous!

je cherche une fonction qui permette de se positionner dans un tableau à hauteur d'une clé connue.

Exemple :

Code : Tout sélectionner

$montTableau= array("test0","test1","test2","test3"); $curseur = poscurseur($montTableau, 1); // c'est cette fonction qui m'intéresserait ! elle positionnerai le curseur de monTableau sur la valeur "test1" (clé = 1) //Ensuite je peux utiliser les fonctions next ou prev pour connaitre les éléments précédents et suivants ma clé $suivant = next($montTableau);
merci de votre aide!

Posté : 10 sept. 2008, 15:10
par _activmik
Tu as tout ce qu'il te faut avec les fonctions array de php :

current
next
prev


Voir même histoire d'optimiser ta fonction :

key
array_key_exists
in_array (si tu passes par une valeur)

Et n'oublie pas le terrible foreach pour parcourir ton tableau.

Bonne chance :wink:

Re: Tableaux : changer la position du pointeur

Posté : 10 sept. 2008, 15:19
par sadeq
_activmik a raison, tu es en train de réinventer la roue et c'est un travail sup qui ne sert à rien exactement comme ta fonction :
$curseur = poscurseur($montTableau, 1); // c'est cette fonction qui m'intéresserait ! elle positionnerai le curseur de monTableau sur la valeur "test1" (clé = 1)
Car si la fonction poscurseur() positionne le curseur à 1 alors $curseur est systématiquement 1 et celà revient à dire, tout simplement, que :
$curseur = 1;
Car positionner un curseur n'est pas une opération qui implique physiquement le tableau mais c'est une opération logiquement préparatoire qui implique une variable jouant le rôle d'indice de tableau (comme $curseur) Positionner le curseur à 1 s'écrit alors : $curseur = 1;

Quant aux opérations: suivant() ou pécédent(), elles vont agir sur la valeur de l'indice $curseur. Suivant() va faire $curseur++ et Précédent() fera $curseur--

Le curseur $curseur est donc le seul impliqué physiquement par les opérations de positionnement, il est un élément commun (partagé) utilisé par l'ensemble des fonctions de positionnement. Il est donc une variable globale ou partagée.

Re: Tableaux : changer la position du pointeur

Posté : 10 sept. 2008, 15:51
par _activmik
next() ou previous().
prev() :wink:

Posté : 10 sept. 2008, 16:41
par sadeq
Ok, mais je ne citais pas spécialement la fonction prev() intégrée. J'ai édité mon message précédent pour transformer next en suivant et previous en précédent pour plus de clarté.

Posté : 10 sept. 2008, 16:46
par _activmik
Ok, c'était juste pour pas que quelqu'un prenne tel quel les informations et post en disant que ça marche pas :wink: Loin de moi l'idée de te corriger :D

Posté : 10 sept. 2008, 17:15
par sadeq
T'as raison :lol:

Posté : 14 sept. 2008, 12:47
par maheu
Merci pour vos réponses (avec un peu de retard!)

sadeq tu as raison ma fonction serait inutile dans le cas d'un tableau indexé à partir de 0 et de raison n+1, cependant dans mon cas en fait les clés de mon tableau étaient aléatoires, et j'aurai eu besoin à partir d'une clé connue de pouvoir trouver les clés suivante et précédente.

Enfin j'ai finit par repenser mon code et créer un tableau ordonné à partir de 0 et procéder comme suit :

Code : Tout sélectionner

$maCle = array_search($maValeur, $monTableau); switch($sens) { case 'precedent' : for($i = 0; $i != $maCle; $i++) { $cleCourante = next($montTableau); } $clePrecedente = prev($montTableau); break; case 'suivant' : for($i = 0; $i != $maCle; $i++) { $cleCourante _id = next($montTableau); } $cleSuivante = next($montTableau); break; }