2011-09-14 90 views
2
$vals = array(51, 23, 77, 3, 8, 31, 17, 102, 87); 
arsort($vals); 

從這裏,我如何獲得3個第一個值的關鍵?如果我這樣做$vals[0]它不會工作,因爲它會在arsort之前返回原始的[0]鍵。PHP關鍵問題

我想要得到102,87和77之後的原始密鑰。

回答

3

取決於你需要什麼,一個辦法是

$keys = array_keys($vals); 

$鍵[0 ]將包含第一個鍵。 $ vals [$ keys [0]]將包含第一個值。

的備用方法

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

$部分將包含前三個項的三個$密鑰=> $值對。

而對於前三個按鍵,你可以混合和匹配上面,如:

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

echo join(', ', $firstThreeKeys); 
1

我想我已經找到了一種方法,也許不是然而最好的:

reset($arr); $key1=key($arr); 
next($arr); $key2=key($arr); 
next($arr); $key3=key($arr); 
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 
0

arsort保存密鑰=>值的關係,所以它usualy用於關聯數組(散列)。爲了您的需要,嘗試使用standart sotring函數對value => key array進行排序,而不是您的key =>值。否則,你可以使用foreach循環(限制3次迭代)來獲得密鑰。