$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87);
arsort($vals);
从这里,我如何获得3个第一个值的关键?如果我这样做$vals[0]
它不会工作,因为它会在arsort之前返回原始的[0]键。PHP关键问题
我想要得到102,87和77之后的原始密钥。
$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87);
arsort($vals);
从这里,我如何获得3个第一个值的关键?如果我这样做$vals[0]
它不会工作,因为它会在arsort之前返回原始的[0]键。PHP关键问题
我想要得到102,87和77之后的原始密钥。
取决于你需要什么,一个办法是
$keys = array_keys($vals);
$键[0 ]将包含第一个键。 $ vals [$ keys [0]]将包含第一个值。
的备用方法
$part = array_slice($vals, 0, 3, true);
$部分将包含前三个项的三个$密钥=> $值对。
而对于前三个按键,你可以混合和匹配上面,如:
$firstThree = array_keys(array_slice($vals, 0, 3, true));
$firstThreeKeys = array_slice(array_keys($vals), 0, 3);
echo join(', ', $firstThreeKeys);
我想我已经找到了一种方法,也许不是然而最好的:
reset($arr); $key1=key($arr);
next($arr); $key2=key($arr);
next($arr); $key3=key($arr);
你可以使用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
arsort保存密钥=>值的关系,所以它usualy用于关联数组(散列)。为了您的需要,尝试使用standart sotring函数对value => key array进行排序,而不是您的key =>值。否则,你可以使用foreach循环(限制3次迭代)来获得密钥。