Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP关联数组_Php_Arrays - Fatal编程技术网

PHP关联数组

PHP关联数组,php,arrays,Php,Arrays,我在PHP中有一个关联数组 $asd['a'] = 10; $asd['b'] = 1; $asd['c'] = 6; $asd['d'] = 3; 我想根据它的值对其进行排序,并获得前4个值的键值 如何在php中实现这一点???该函数就是您需要排序的函数 要获取值,可以使用如下代码: $myKeys = array_keys(asort($asd)); $myNewItems = Array(); for ($i = 0; $i < 4; $i++) $myNewItems[$

我在PHP中有一个关联数组

$asd['a'] = 10;
$asd['b'] = 1;
$asd['c'] = 6;
$asd['d'] = 3;
我想根据它的值对其进行排序,并获得前4个值的键值

如何在php中实现这一点???

该函数就是您需要排序的函数

要获取值,可以使用如下代码:

$myKeys = array_keys(asort($asd));
$myNewItems = Array();
for ($i = 0; $i < 4; $i++)
    $myNewItems[$myKeys[$i]] = $asd[$myKeys[$i]];
$myKeys=array_keys(asort($asd));
$myNewItems=Array();
对于($i=0;$i<4;$i++)
$myNewItems[$myKeys[$i]]=$asd[$myKeys[$i]];
这将使用正确的键和排序顺序将第一个毛发项目放入
$myNewItems

应保持索引关联:

asort($asd);
之后,一个简单的foreach可以得到接下来的四个值

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

其他答案的替代方案。这个没有循环:

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

我想补充一点

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\u NUMERIC
参数,
如果您有一个意外的数组。

如果我想按降序排序怎么办?/Oops,我忘记了$i++。谢谢你,格雷格。