Aide - Recherche - Membres - Calendrier
Version complète : array, placer le pointeur a un endroit précis
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Ldo
comment placer directement le pointeur à un endroit bien précis d'un tableau ?

on peu avancer ou reculer - prev() next() - aller au debut ou a la fin - reset() end() - mais aucune fonction permettant de placer le pointeur à un endroit defini

je pourrait faire une bouche en avancant jusqu'a l'endroit voulu, mais c'est pas top je trouve

quelqu'un connait la syntaxe ?
Antoine
Apparament pas smile.gif Mais dans les commentaires on peut lire :
QUOTE
mattblisset's array_set_current has one flaw: if you have array with key 0, while-loop will stop there. Fixed version:
QUOTE
<?php ){   [/color]);   while ([/color]){       if ([/color]) {           break;       }       [/color]);   }   return [/color]); } [/color]
Ldo
c'est bien ce que je dit, faut faire une boucle

ça me choque, il doit y'avoir un truc, c'est pas possible autrement qu'il n'aient pas prévu ce genre de chose
à mon avis ça doit être beaucoup plus simple qu'on ne le pense
Antoine
Ben, je suppose que tu as fait comme moi... que tu as épluché la doc smile.gif
Si tu as le mail de Rasmus Lerdorf contacte le :mrgreen:

En effet, c'est étrange quand même qu'il n'y ait pas une fonction native... Oubli volontaire ? ou bien on ne l'a pas vue
qwix
Je comprends pas, pourquoi tu ne fait pas $tableau[5] par exemple ?

smile.gif
Ldo
parce que au final, je veut connaitre les clés/valeur pour la ligne suivante et la précedente

je veut pouvoir lui dire tu place le pointeur a l'index 5 ou 'toto' et tu me donne ce qu'il y a juste avant prev() et juste apres next()
Thanh
Comme m'a dit un de mes chefs la semaine dernière :


"Fais ta propre classe Array"

^^
qwix
Désolé, mais je comprends toujours pas :oops:
Position pointée = X
précédent = X - 1
suivante = X + 1

non ?

smile.gif
Ldo
et si X est une chaine de caractère ?

tu fait 'toto' -1 ? :shock:

vais faire des tests pour voir si on se comprend bien lol
Antoine
CODE
class Array {

private $_array = array;

private $_current;



function __construct($array) {

if(is_array($array) { $this->_array = $array; } else { return false; }

}



public function SetPosByKey($pos) {

$this->current = $pos;

}



public function Next() {

return $this->_array[$this->current + 1];

}



public function Prev() {

return $this->_array[$this->current - 1];

}



public function Current() {

return $this->_array[$this->current];

}



}

Quelque chose comme ça ? (j'ai pas teste, j'ai tapé ça vite fait smile.gif)
Antoine
Oups, si les keys peuvent être des strings, c'est un rien plus complexe mais ça doit être gérable smile.gif
qwix
QUOTE
et si X est une chaine de caractère ?

tu fait 'toto' -1 ? :shock:  

vais faire des tests pour voir si on se comprend bien lol

Ha, c'est un tableau associatif ? Dans ce cas ça ne marche pas, mais alors pourquoi ne pas générer des clés d'associations du genre:
$array = ("truc_1"=>bidule, "truc_2" = "plop" etc, etc) ;

Et ensuite il te suffit de faire un subtr de la clé vu que l'indice pour récupérer l'indice qui est après le _ et hop c'est réglé comme ça, si tu es à l'indice 5 next vaudrait "truc_6" et previuos "truc_4" wink.gif

non ?

smile.gif
Ldo
c'est bien ce que je disait

avec un tableau :
$arr[1]
$arr[2]
$arr['toto']
$arr[4]

si je fait mon 'toto'+1, il cherche la clé 'totp' et non pas la clé 4

si ça ne tenait qu'a moi, je n'utiliserais que des clés numérique, mais y'aura toujours un abrutit pour venir foutre des string ...
alors autant le prevoirce que je veut, c'ets que si je lui donne la clé 2, il me retourne prev=1, next='toto'
si je lui donne 'toto' il retourne prev=2, next=4
Antoine
et si tu écris une classe qui gère ton tableau comme un tableau double... (euh...)

genre array([0]=>array("identrée"=>"valeurentrée"), ...)

Je vais jeter un coup d'oeil dans PHP5 avancé pour voir s'il parle d'une fonction pour placer le pointeur smile.gif
Ldo
QUOTE
pourquoi ne pas générer des clés d'associations du genre


tout simplement parce que ce n'est pas moi qui les gèrent !
c'est l'utilisateur qui va décider du nom des clés

croyez bien que sinon je ferait tout pour me simplifier la vie biggrin.gif

voila pourquoi je voulait baser tout mon code sur le déplacement du pointeur dans le tableau
comme ça je n'utilise jamais les noms !



honnetement ça me sidère qu'il soit si dur de se déplacer dans un tableau :shock:
Ldo
a défaut, je vient de tester

prev($arr[$key]);

il me renvoit un beau false le petit batard :evil:
qwix
Ou alors ce qu'il te faut c'est créer un tableau virtuel qui sera le calque de ton vrai tableau, mais tu l'indexe numériquement, et en valeur tu donne les clés correspondantes, et tu te fait une routine qui gère ça et hop c'est réglé wink.gif

non ?

smile.gif
Antoine
Tu devras passer par un autre tableau parceque même dans mon book, rien de chez rien...
C'est limite s'il ne traite pas la fonction d'inutile biggrin.gif

Ton tableau risque d'avoir quel taille ?
Ldo
c'est bon j'ai un truc qui marche avec
QUOTE
<?php reset); while([/color]); [/color]); [/color]); while([/color]); [/color]); [/color]
me reste à mettre la boucle dans une fonction avec une référence sur le tableau, et ça sera bon
Ldo
QUOTE
<?php ) {     [/color]);     while([/color]);     return [/color]; } [/color]
Antoine
Faudrait que ça remonte jusqu'au dév. de PHP afin de combler ce vide smile.gif
Ldo
inutile, cette fonction convient dans l'ensemble du reste
mais seule elle ne sert à rien ^^
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.