$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次迭代)來獲得密鑰。