2012-08-22 45 views
0

我有這樣如何找到索引的位置在一個數組在PHP

Array 
(
[33] => 
[53] => 
[82] => 
[36] => 
[47] => 
[42] => 
[1] => 
[12] => 
[86] => 
[68] => 
[31] => 1.00 
[2] => 1.00 
[87] => 2.00 
[50] => 3.00 
[10] => 3.00 
[55] => 3.00 
[48] => 3.00 
[70] => 3.00 
[90] => 3.00 
[37] => 3.00 
[69] => 3.00 
[8] => 3.00 
[49] => 3.00 
[26] => 3.00 
[13] => 3.00 
[61] => 3.00 
[59] => 3.00 
[73] => 4.00 
[64] => 4.00 
[77] => 4.00 
[78] => 4.00 
[65] => 4.00 
[66] => 4.00 
[63] => 4.00 
[76] => 4.00 
[51] => 4.00 
[52] => 4.00 
[43] => 4.00 
[58] => 4.00 
[60] => 4.00 
[74] => 4.00 
[67] => 4.00 
[35] => 4.00 
[17] => 4.00 
[16] => 4.00 
[18] => 4.00 
[20] => 4.00 
[41] => 4.00 
[15] => 4.00 
[11] => 4.00 
[4] => 4.00 
[5] => 4.00 
[6] => 4.00 
[7] => 4.00 
[83] => 4.00 
[22] => 4.00 
[34] => 4.00 
[38] => 4.00 
[40] => 4.00 
[25] => 4.00 
[32] => 4.00 
[80] => 4.00 
[81] => 4.00 
[27] => 4.00 
[30] => 4.00 
[79] => 5.00 
[89] => 5.00 
[88] => 5.00 
[72] => 5.00 
[71] => 5.00 
[44] => 5.00 
[21] => 5.00 
[23] => 5.00 
[24] => 5.00 
[19] => 5.00 
[14] => 5.00 
[3] => 5.00 
[9] => 5.00 
[28] => 5.00 
[29] => 5.00 
[56] => 5.00 
[57] => 5.00 
[54] => 5.00 
[46] => 5.00 
[39] => 5.00 
[45] => 5.00 
[62] => 5.00 
) 

現在我想找到特定索引的什麼位置的數組。即如果我搜索53,那麼它返回它的位置,即2。因爲我正在考慮53SECOND的位置。

+0

由於數組爲'0'索引,它不會返回'1'嗎? – alex

+1

「2」和「53」之間沒有關聯_anywhere_:? – KingCrunch

回答

5

使用array_keys()獲取密鑰,然後嘗試使用array_search()獲取它的索引。

$keys = array_keys($yourArray); 
$key = array_search('53', $keys); 

沒有測試過它,但應該工作。

4

可以使用

$a = array_keys($array) 

得到一個數組,其值是$陣列=>鍵

後,您可以使用

$a = array_flip($a); 

使陣列值陣列指數(倉位如你所願!

然後

$a["53"];//for example will get what you want 

希望它有助於

注:如果你經常訪問一個$使用我的方式,因爲它建立在陣列之後,你將有O(1)訪問時間,如果您需要一次或兩次訪問,則最好使用array_search以獲得array_keys陣列中的索引(使用O(n))。

2
function findIndex($arr, $needle) { 
    $i = 0; 
    foreach ($arr as $key => $value) { 
     if ($key === $needle) { 
     return $i; 
     } 
     $i++; 
    } 
    return false; 
} 
+0

'$ i ++'應該在'if'後面,因爲會返回+1 –

+0

@MihaiIorga是的,OP想要2(這是他所說的一個錯字)起初。 – xdazz

相關問題