hakeem69
Messages postés30Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention 7 mai 2009
-
19 mars 2008 à 22:58
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.
A voir également:
Php taille tableau
Remplir un tableau associatif php - Meilleures réponses
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.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 19 mars 2008 à 23:12
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...
hakeem69
Messages postés30Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention 7 mai 2009 19 mars 2008 à 23:57
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
hakeem69
Messages postés30Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention 7 mai 2009 20 mars 2008 à 01:28
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.
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 20 mars 2008 à 03:26
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)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 mars 2008 à 08:10
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.
hakeem69
Messages postés30Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention 7 mai 2009 20 mars 2008 à 13:29
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.