PHP arsort问题与键

时间:2011-09-14 15:58:58

标签: php

$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87);
arsort($vals);  

从这里,我如何获得3个第一个值的键?如果我执行$vals[0]它将无效,因为它会在arsort之前返回原始[0]键。

我希望在arsort之后获得102,87和77的原始密钥。

5 个答案:

答案 0 :(得分:3)

根据您的需要,一种方法是

$keys = array_keys($vals);

$ keys [0]将包含第一个键。 $ vals [$ keys [0]]将包含第一个值。

另一种方式

$part = array_slice($vals, 0, 3, true);

$ part将包含三个$ key =>前三个条目的$ value对。

对于前三个键,您可以混合并匹配上述内容,例如:

$firstThree = array_keys(array_slice($vals, 0, 3, true));

答案 1 :(得分:2)

$firstThreeKeys = array_slice(array_keys($vals), 0, 3);

echo join(', ', $firstThreeKeys);

答案 2 :(得分:1)

我想我找到了一种方法,但可能不是最好的方法:

reset($arr); $key1=key($arr);
next($arr); $key2=key($arr);
next($arr); $key3=key($arr);

答案 3 :(得分:0)

您可以使用array_keys()

或者,使用foreach遍历已排序的数组,您仍然可以获得键:

$i = 0;
$numKeysToGet = 3;
$keys = array();
foreach ($vals as $k => $v) if ($i < $numKeysToGet) {
  $keys[] = $k;
  $i++;
} else break;

// $keys now contains the first three array keys

答案 4 :(得分:0)

arsort保存key =&gt;值关系,因此它通常用于关联数组(哈希)。根据您的需要,尝试使用标准sotring函数对value =&gt;键数组进行排序,而不是使用key =&gt;值。否则你可以使用foreach循环(限制它3次迭代)来获取密钥。