打印带有数字和浮点数的已排序关联PHP数组的前n个值?

时间:2016-06-14 04:11:06

标签: php arrays sorting

我有一个PHP数组,在排序后看起来像:

Array ( [542] => 30 [588] => 29.77 [409] => 19.9 [237] => 19.47 [457] => 17.73 [410] => 15.86);

实际的数组很长。最初,按键顺序设置为0,1,2 ...... 然后我对数组进行了排序,现在数组看起来像上面的数组。当我尝试使用echo $engagement[0]打印第一个元素时,如果这个已排序的数组,我没有得到值30.要获得30,我必须使用$engagement[542]。但我无法知道这个排序数组中的第一个键是什么。如何打印此排序数组的前n个键和值对?

如果我需要更清楚地了解我的解释,请告诉我。 :)

2 个答案:

答案 0 :(得分:1)

您需要使用array_slice()以固定长度对数组进行切片,然后使用array_keys

$length = 50;
$start = 0;
$new_arr = array_slice($engagement, $start, $length);
$keys = array_keys($new_arr);
foreach($keys as $key){
    echo $new_arr[$keys[$key]];
}

没有array_keys

foreach($new_arr as $key => $value){
    echo $key." => ".$value;
}

当您不使用true时,请务必使用array_keys

$new_arr = array_slice($engagement, $start, $length, true);

更多关于:array_slice

  

如果你不使用true,那么切片数组索引将被重置   失去钥匙。

<强>更新

由于你只要求数组键,默认情况下array_slice重置数组键,如果你想保留,那么你需要使用true作为array_slice的第四个参数。

$new_arr = array_slice($engagement, $start, $length, true);
$keys = array_keys($new_arr); // here is the list of the keys

答案 1 :(得分:0)

尝试这样的事情......

$test = array('29.58', '21.78', '56.258', '10.145', '98.23', '20', '78.32', '112', '5.64', '55.26');
asort($test);

$count = 0;
foreach($test as $key => $val)
{
    if($count <=5)
    {
        echo " [".$key."] => ".$val."\t";
        $count+=1;
    }
}