мой массив выглядит так:
[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», а затем вернуть индекс этого элемента в массив.
Спасибо за любую помощь.
Вы можете использовать array_search
для ключей массива ( array_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)
$keys = array_keys($sx1); $index = array_search('SX1T_1',$keys);
Если вы не хотите использовать какие-либо функции и в любом случае необходимо прокручивать массив, чтобы искать или сопоставлять определенные условия (особенно полезно, если ваши поиски становятся более сложными), вы можете использовать приведенный ниже принцип, чтобы пройти через массив и найдите индекс $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; }