Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2011, 13h45   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Tableau : comment récupérer la clé suivante ?

Bonjour à toutes et tous,

J'ai épluché la doc et la FAQ mais je n'ai pas trouvé de réponse.

Soit un tableau, crée à partir d'une requête SQL, trié avec asort sur la valeur, dont je ne connais pas le contenu :

Citation:
array(
[124] => "A"
[89] => 'B'
[12] => "C"
[7] => "D"
)
Comment récupérer la clé 12 si je connais la clé 89 ? Je parle de la valeur même de la clé, et non pas sa valeur associée.
Merci pour vos conseils.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h33   #2
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
Hello,

Y'a pas de méthode simple je crois.

Une possibilité :

Code :
1
2
3
4
5
6
7
8
// récupérer la liste des clés de ton tableau
$cles = array_keys( $monTableau );
 
// rechercher l'index de 89 dans la liste de clés
$index = array_search( 89 , $cles ); //devrait renvoyer 1
 
// récupérer l'élément suivant dans la liste des clés
$cleSuivante = $cles[ $index + 1 ];
__________________
Pourfendeur de singletons en croisade
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h39   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonjour,

Bien vu !
De mon côté, j'ai cherché et trouvé cette fonction qui le fait bien :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function cle_suivante($arr, $key)
{
   $keys = array_keys($arr);
   $keyIndexes = array_flip($keys);
   $return = array();
 
   if (isset($keys[$keyIndexes[$key]+1])) {
       $return[] = $keys[$keyIndexes[$key]+1];
   }
 
   return $return;
}
Merci beaucoup de t'être penché sur ma question, qui, effectivement, n'était pas simple.
Bonne fin de journée.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 15h15   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Bonjour,

Allez dans les délires à la con tu peux aussi faire ça en une ligne :
Code :
return key(array_slice($a, array_search(89, array_keys($a)) + 1, 1, TRUE));
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h58.


 
 
 
 
Partenaires

Hébergement Web