2010-09-23 92 views
4

我數組的索引是這樣的:搜索數組鍵和返回鍵匹配

[sx1] => Array 
     (
      [sx1] => Pain in Hand 
      [sx1L] => Location 
      [sx1O] => Other Treat 
      [sx1T] => Type 
      [sx1R] => Radiation 
      [sx1A] => Aggrivate Ease 
      [sx1D] => Duration 
      [sx1I] => Irit 
      [sx1P] => Previous Hx 
      [SX1T_1] => CX 
      [SX1T_2] => Shld 
      [SX1T_3] => Trnk 
      [SX1T_4] => Hip 
      [SX1T_5] => 
     ) 

我需要能夠通過一鍵搜索數組,然後返回匹配項的索引。 例如,我需要在數組中搜索鍵「SX1T_1」,然後返回數組中的該項的索引。

感謝您的任何幫助。

+0

在這種情況下,預期的「指數」是什麼? – Gumbo 2010-09-23 20:22:26

+0

鍵「SX1T_1」的索引將爲9,因爲它是數組中的第10個項目,並且它從0開始計數 – Emmanuel 2010-09-23 20:23:20

+3

「SX1T_1」*爲索引。 – geon 2010-09-23 20:30:11

回答

12

您可以使用數組鍵array_searcharray_keys)得到的數值指標:

$array = array(
    'sx1' => 'Pain in Hand', 
    'sx1L' => 'Location', 
    'sx1O' => 'Other Treat', 
    'sx1T' => 'Type', 
    'sx1R' => 'Radiation', 
    'sx1A' => 'Aggrivate Ease', 
    'sx1D' => 'Duration', 
    'sx1I' => 'Irit', 
    'sx1P' => 'Previous Hx', 
    'SX1T_1' => 'CX', 
    'SX1T_2' => 'Shld', 
    'SX1T_3' => 'Trnk', 
    'SX1T_4' => 'Hip', 
    'SX1T_5' => '', 
); 
var_dump(array_search('SX1T_1', array_keys($array))); // int(9) 
+0

完美,這很好!非常感謝。 – Emmanuel 2010-09-23 20:26:57

2
$keys = array_keys($sx1); 
$index = array_search('SX1T_1',$keys); 
1

如果你不想通過陣列中使用的任何功能,需要循環反正在特定條件下搜索或匹配(特別是在搜索變得更加複雜的情況下非常有用),那麼您可以使用以下原則遍歷數組,並找到$mykey的索引並將其放入變量$myindex。這段代碼假設你的索引從零開始,如果你想從1開始,那麼初始化$index = 1;

$a = array(
    "one" => 1, 
    "two" => 2, 
    "three" => 3, 
    "seventeen" => 17 
); 

$index = 0; 
foreach ($a as $k => $v) { 
    if ($k == $mykey) { 
      $myindex=$index 
    } 
    $index=$index+1; 
}