2016-07-19 18 views
0

我有兩個陣列 第一個數組:排序的陣列和得到的鑰匙

$array_1 = array('50','20','30'); 

第二陣列:

$array_2 = array('50','30','20'); 

第二陣列是通過將生成rsort$array_1

如何能我得到另一個關鍵像

$key_array = ('0','2','1'); 

回答

0

rsort功能將重新索引你的數組鍵:

注:此功能分配新的鍵在數組中的元素。它將刪除可能已分配的所有現有密鑰,而不僅僅是重新排序密鑰。

您可以改爲使用arsort來維護索引關聯。然後你可以簡單地使用array_keys來獲得你想要的結果。

$unsorted = [50, 20, 30];   // array with unsorted values 
$in_reverse = $unsorted;   // create copy because arsort is by reference 
arsort($in_reverse);    // do the actual sorting 
$keys = array_keys($in_reverse); // fetch the keys 

print_r($keys); 

將輸出

Array 
(
    [0] => 0 
    [1] => 2 
    [2] => 1 
) 
+0

謝謝......我知道了。 –

+0

請檢查我改變了輸出 –

+0

@alialwafaa請不要這樣做。此頁面上的所有答案均爲所需輸出[0,2,1]。當你用這種方式改變你的問題時,你會過時所有的答案。我已經回滾你的編輯。請提出另一個問題。當你這樣做時,一定要解釋原因。 – Gordon

0

可以使用arsort功能,而不是rsort保持數組鍵。之後,你將不得不使用array_keys的possibilty:

$array_1 = array('50','20','30'); 
$array_2 = $array_1; 
arsort($array_2); 
$key_array = array_keys($array_2); 
1

代替rsort使用arsort,其中

逆向排序數組,並保持索引關係。

之後 - 使用array_keys

$array_1 = array('50','20','30'); 
arsort($array_1); 
print_r(array_keys($array_1)); 
0

我認爲你應該使用這樣的具有保存索引來進行排序:

$array_1 = array('50','20','30'); 
arsort($array_1); 

$key_array = array_keys($array_1); 
var_dump($key_array); 

輸出:

array(3) { [0]=> int(0) [1]=> int(2) [2]=> int(1) } 
0

可以使用array_key s()函數。

$array = array('50','30','20'); 

$arr_keys = array_keys($array);