Retourner la position d'une clé d'un tableau associatif

Signaler
Messages postés
56
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
22 janvier 2008
-
Messages postés
56
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
22 janvier 2008
-
Bonjour

Question certainement conne s'il en est mais j'ai dû louper une fonction de base : comment trouver la position d'une clé dans un tableau associatif ? Y a-t-il une fonction de base pour cela ou dois-je la coder moi-même ?

Exemple en nommant cette fonction bingo() :
$tableau array ('clé'> 'valeur', 'nouvelle clé' => 'nouvelle valeur' );

bingo('nouvelle clé') = 1;

De même avec les valeurs et non plus les clés.

Merci beaucoup.
Nemetral.

3 réponses

Messages postés
56
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
22 janvier 2008

Trouvé (mais s'il existe une fonction de base je suis toujours preneur !) :

function catchKey($array,$target) {

$i=0;

$pos = "";

foreach ($array as $key => $value) {

if ($target==$key) $pos = $i;

$i++;

}

return $pos;

}

Pour les valeurs, je retire cette question car plusieurs cellules du tableau peuvent avoir la même valeur !
[ NemetraL ]
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

ta question n'a pas de sens.

Si je fais un tableau indexé numériquement de ce genre :$tab array (5> 'test', 9 -> 'bla');

le 9 est à la 1ère position...? Ok...alors si ensuite je fais ceci sur ce même tableau :
$tab[7] = 'ah...";
Que devient ta clef 9 ?

et puis, si j'ordonne mon tableau ? Que devient la "position" de tes clefs...?
Messages postés
56
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
22 janvier 2008

Slt

Je parlais d'un tableau associatif avec clés autres que numériques.

Le fond du problème était le suivant : je me construis un tableau associatif que je remplis de données en provenance de la bdd, et ensuite je le manipule notamment en supprimant quelques cellules. Pour cela, il me faut les identifier. J'ai donc voulu passer par array_splice mais il faisait n'importe quoi aux extrêmes (première et dernière cellule). Donc j'ai fait des boucles pour traiter à part les cas extrêmes. Mais comment savoir si la cellule recherchée est ou non à l'extrême sachant que je ne connais que la valeur de la clé ?

De là l'idée de faire cette fonction.

Le problème s'est résolu autrement : unset($array[$key]). Plus simple non ?

Je me disais bien qu'une fonction de base était en mesure de gérer ça...

[ NemetraL ]