我在PHP中有一个关联数组
$asd['a'] = 10;
$asd['b'] = 1;
$asd['c'] = 6;
$asd['d'] = 3;
我希望根据其值对其进行排序,并获得前4个值的键值。
我怎么能在php ???
中这样做答案 0 :(得分:7)
asort()应该保持索引关联:
asort($asd);
之后,一个简单的foreach可以获得接下来的四个值
$i = 0;
foreach ($asd as $key=>$value)
{
if ($i >= 4) break;
// do something with $asd[$key] or $value
$i++;
}
答案 1 :(得分:5)
其他答案的替代方案。这个没有循环:
asort($asd);
$top_four_keys = array_slice(array_keys($asd), 0, 4);
答案 2 :(得分:2)
asort函数是您需要对其进行排序的。
要获取值,您可以使用以下代码:
$myKeys = array_keys(asort($asd));
$myNewItems = Array();
for ($i = 0; $i < 4; $i++)
$myNewItems[$myKeys[$i]] = $asd[$myKeys[$i]];
将第一个毛皮项目放入$myNewItems
,并使用正确的密钥和排序顺序。
答案 3 :(得分: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
参数,
如果您有意外的数组。