2009-07-01 11 views
2

J'ai un tableau associatif en PHPPHP tableau associatif

$asd['a'] = 10; 
$asd['b'] = 1; 
$asd['c'] = 6; 
$asd['d'] = 3; 

je veux régler cette question sur la base de sa valeur et d'obtenir la valeur de clé pour les 4 premières valeurs.

comment puis-je faire cela en php ???

Répondre

7

asort() devrait garder l'association index:

asort($asd); 

Après cela, un simple foreach pouvez-vous obtenir les quatre valeurs

$i = 0; 
foreach ($asd as $key=>$value) 
{ 
    if ($i >= 4) break; 
    // do something with $asd[$key] or $value 
    $i++; 
} 
+4

+1 mais peut-être vouloir je ++ quelque part là :) – Greg

+0

et si je veux trier dans l'ordre décroissant?/ – Andromeda

+1

http://php.net/arsort –

2

La fonction asort est ce dont vous avez besoin pour le trier.

Pour obtenir les valeurs, vous pouvez utiliser le code comme ceci:

$myKeys = array_keys(asort($asd)); 
$myNewItems = Array(); 
for ($i = 0; $i < 4; $i++) 
    $myNewItems[$myKeys[$i]] = $asd[$myKeys[$i]]; 

qui mettra les premiers articles de fourrure dans $myNewItems, avec les touches appropriées et l'ordre de tri.

5

Une alternative aux autres réponses. Celui-ci sans une boucle:

asort($asd); 
$top_four_keys = array_slice(array_keys($asd), 0, 4); 
0

Je voudrais ajouter ...

asort($asd,SORT_NUMERIC); 
$top_four_keys=array_slice(array_keys($asd), 0, 4); 

Pour ordre décroissant:

arsort($fruits,_SORT_NUMERIC); 
$top_four_keys=array_slice(array_keys($asd), 0, 4); 

Vous pouvez avoir besoin d'utiliser le paramètre SORT_NUMERIC, en cas de vous avez un tableau inattendu.

Questions connexes