2009-07-01 8 views
2

У меня есть ассоциативный массив в PHPPHP ассоциативный массив

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

я хочу разобраться в этом на основе его стоимости и получить значение ключа в течение первых 4-х значений.

как я могу это сделать в php ???

ответ

7

asort() должен поддерживать ассоциацию индексов:

asort($asd); 

После этого простой Еогеасп вы можете получить следующие четыре значения

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

+1 но может захотеть i ++ где-то там :) – Greg

+0

что делать, если я хочу сортировать по убыванию?/ – Andromeda

+1

http://php.net/arsort –

2

asort функция, что вам нужно для его сортировки.

Чтобы получить значение, вы можете использовать такой код:

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

Который поставят первые элементы меха в $myNewItems, с соответствующими ключами и порядок сортировки.

5

Альтернативой другие ответы. Это один без петли:

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

Я хотел бы добавить ...

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

Для убывающем порядке:

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

Вам может понадобиться использовать SORT_NUMERIC параметр, в случае у вас есть неожиданный массив.

Смежные вопросы