$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87);
arsort($vals);
从这里,我如何获得3个第一个值的键?如果我执行$vals[0]
它将无效,因为它会在arsort之前返回原始[0]键。
我希望在arsort之后获得102,87和77的原始密钥。
答案 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次迭代)来获取密钥。