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
Feb 9 2005, 12:45 PM
Apparament pas

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]
|
|
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
Feb 9 2005, 12:52 PM
Ben, je suppose que tu as fait comme moi... que tu as épluché la doc
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
Feb 9 2005, 01:23 PM
Je comprends pas, pourquoi tu ne fait pas $tableau[5] par exemple ?
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
Feb 9 2005, 02:36 PM
Comme m'a dit un de mes chefs la semaine dernière :
"Fais ta propre classe Array"
^^
qwix
Feb 9 2005, 02:59 PM
Désolé, mais je comprends toujours pas :oops:
Position pointée = X
précédent = X - 1
suivante = X + 1
non ?
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
Feb 9 2005, 03:07 PM
| 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
)
Antoine
Feb 9 2005, 03:08 PM
Oups, si les keys peuvent être des strings, c'est un rien plus complexe mais ça doit être gérable
qwix
Feb 9 2005, 03:21 PM
| 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"
non ?
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
Feb 9 2005, 03:24 PM
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
| 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
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:
a défaut, je vient de tester
prev($arr[$key]);
il me renvoit un beau false le petit batard :evil:
qwix
Feb 9 2005, 03:34 PM
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é
non ?
Antoine
Feb 9 2005, 03:38 PM
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
Ton tableau risque d'avoir quel taille ?
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
| QUOTE |
|
<?php
) {
[/color]);
while([/color]);
return [/color];
}
[/color]
|
Antoine
Feb 9 2005, 04:02 PM
Faudrait que ça remonte jusqu'au dév. de PHP afin de combler ce vide
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.