Première valeur d'un tableau associatif ?

Messages postés
30
Date d'inscription
vendredi 22 juillet 2005
Dernière intervention
7 mai 2009
- 19 mars 2008 à 22:58 - Dernière réponse :  tgra78
- 18 oct. 2018 à 12:31
Bonjour,


Je vousdrais SVP connaître la fonction (si elle existe) qui permet trouver la 1ere valeur d’un tableau associatif.


Pour un tableau simple, c’est très facile : $tableau[0] ;


Mais visiblement ca na fonctionne pas avec les tableau avec : clé => valeurs.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




J’ai chercher un peu partout sans trouver


Quelqun  a une idée ?


Cdl, Hakim.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 20 mars 2008 à 08:14
3
Merci
Oups, 1ère valeur, pas première clef : remplacer key() par current().

Merci malalam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de malalam
Messages postés
30
Date d'inscription
vendredi 22 juillet 2005
Dernière intervention
7 mai 2009
- 19 mars 2008 à 23:10
0
Merci
Merci amezghal,
mais la ou ce se complique c’est que je ne connais pas le clé de la première valeur du tableau...
Un solution ?
Commenter la réponse de hakeem69
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 19 mars 2008 à 23:12
0
Merci
Salut,

Dans un tableau associatif, il n'y a pas vraiment de "première valeur", puisque justement, les éléments ne sont pas triés.

Cependant, dans la mémoire, ils sont effectivement dans un certain ordre... Mais je ne sais pas si cet ordre est constant ou lié aux registres mémoire utilisés par PHP.

Tu peux toujours essayer foreach et sortir de la boucle dès la première valeur récupérée... Mais je ne suis pas certain que ce soit une manière de faire vraiment pertinente...

Neige
Commenter la réponse de neigedhiver
Messages postés
30
Date d'inscription
vendredi 22 juillet 2005
Dernière intervention
7 mai 2009
- 19 mars 2008 à 23:57
0
Merci
Bonjour Neige !

je croiq pourtant qu'un tableau associatif à bien un ordre.

mon tableau $tableau contient exclusivement des valeurs numériques.
j'effectue un arsort($tableau);
et ca fonctionne très bien !

à présent j'aimerais obtenir la première valeur (donc la plus elevée) mais... je n'y arrive pô.
Si qq1 connais sinon une fonction qui retourne la plus grande valeur d'un tableau, elle fera également mon bonheur.
merci à tous en tout cas.
Hakim
Commenter la réponse de hakeem69
Messages postés
386
Date d'inscription
lundi 27 février 2006
Dernière intervention
21 août 2015
- 20 mars 2008 à 00:00
0
Merci
<?php
$arr = array('cle_1'=>'valeur_1', 'cle_2'=>'valeur_2');
$new_arr = array_keys( $arr );
echo $new_arr[0]; // ça donne "cle_1"
?>
voilà...

Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
Commenter la réponse de amezghal
Messages postés
30
Date d'inscription
vendredi 22 juillet 2005
Dernière intervention
7 mai 2009
- 20 mars 2008 à 01:28
0
Merci
Merci infiniement Amezghal, mais ce que je veux c'est la valeur, pas la clé.

C'est pas grave, j'ai trouvé une solution, mais je ne sais pas ce que ca va donner en production.

mes clés et mes valeures étaient issues d'une requete Sql.

à partir de cette requête, au lieu de créer un seul tableau associatif comme jusqu'à présent :
clé = titre (champ dans ma table)
valeur = nombre de clique (autre champs dans ma table)

j'ai créé deux tableaux simple (juste les valeurs) 

$moyen1[] = mes titres
$moyen2[] = mes cliques



//au passage je pique le plus grand nombre de clique (en gros, ce que je cherche depuis le début) avec :

$max =  $moyen2[0];

// et je créer par la suite un tableau associatif avec :



$grand_tabeau = array_combine($moyen1, $moyen2);

je me retrouve donc avec un grand tableau associatif propre et j'ai au passage pris la plus grande valeure numérique de $moyen2[] (mon nombre de clique)

j'ai donc réussi à faire un beau script PHP avec des graphiques satistique en CSS (adieu library GD) du plus belle effet.

Merci à tous !
Hakim
Commenter la réponse de hakeem69
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
2 août 2010
- 20 mars 2008 à 03:26
0
Merci
Salut,

Bon je sais que tu as déja une solution, mais pour ton problème je suis surpris que personne ne t'ai suggeré array_shift qui dépile le premier élément d'un tableau.. Les éléments d'un tableau ont toujours un ordre (soit l'ordre dans lequel ils sont poussé dans la pile)

par exemple:

$arr = array('cle1'=>'value1',              'cle2'=>'value2',             'cle3'=>'value3');
echo array_shift($arr);

va afficher value1...

Et sinon si c'est juste la plus grande valeure que tu cherchais dans ton tableau la fonction max() t'aurais fait ça :)

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Commenter la réponse de yoman64
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 20 mars 2008 à 08:10
0
Merci
Hello,

array_shift() dépile en effet le premier élément, ce qui n'est pas forcément souhaitable.
Le moyen pourtant simple prévu par la doc auquel personne n'a pensé et qui fait exactement ce que veut hakeem ;-) :
<?php$aTab array('toto'> 'titi', 'bla' => 'blo', 'hello' => 'world');
reset($aTab);
echo key($aTab);
?>
Ici, le reset() n'est évidemment pas nécessaire puisqu'on a pas bougé le pointeur du tableau. Mais c'est juste pour montrer que dans certains cas, c'est nécessaire.
Commenter la réponse de malalam
Messages postés
30
Date d'inscription
vendredi 22 juillet 2005
Dernière intervention
7 mai 2009
- 20 mars 2008 à 13:29
0
Merci
Waouh !
J'avais vraiment mal cherché, merci à toi Yoman ! Le max() fait exactement ce que je voulais !
C’est beaucoup plus propre qu'avec mon array_combine suivi d'autres fonctions, ça évite d'empiler des éléments au fur et à mesure, non seulement je me retrouve avec un beau tableau associatif en fin de requête SQL mais en plus j’économise 5 lignes de code ! (Et donc autant de fonction)

Merci à toi également Malalam car je pensais que le current() ne s'utilisait que si on avait déjà commencé à parcourir le tableau, j’ai donc appris.

Ca marche terrible en tout cas, je vais voir si il n'y a pas de ressource du même genre des les scripts et je posterais peut-être la ressource.

A++ all
hakim.
Commenter la réponse de hakeem69
0
Merci
Salut
Dpuis PHP 7.3, tu peux utiliser $TAB[array_key_first($TAB)]
sinon avant il faut faire $TAB[array_keys($TAB)[0]] avec un isset() pour etre sur que cela existe.
Commenter la réponse de tgra78
Messages postés
386
Date d'inscription
lundi 27 février 2006
Dernière intervention
21 août 2015
- 19 mars 2008 à 23:05
-1
Merci
tableau['clé']...

Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
Commenter la réponse de amezghal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.