php: как получить ключ ассоциативного массива из числового индекса?
Если у меня есть:
$array = array( 'one' =>'value', 'two' => 'value2' );
как мне получить строку one
вернулся из $array[1]
?
8 ответов:
у вас нет. Ваш массив не имеет ключа
[1]
. Вы могли бы:
создайте новый массив, содержащий ключи:
$newArray = array_keys($array); echo $newArray[0];
но значение "один" в
$newArray[0]
, а не[1]
.
Ярлык будет:echo current(array_keys($array));
получить первый ключ массива:
reset($array); echo key($array);
получить ключ, соответствующий значению "value":
echo array_search('value', $array);
это все зависит от что именно вы хотите сделать. Дело в том,
[1]
не соответствует "одному", каким образом вы его поворачиваете.
$array = array( 'one' =>'value', 'two' => 'value2' ); $allKeys = array_keys($array); echo $allKeys[0];
что будет на выходе:
one
Если вы только планируете работать с одним ключом, в частности, вы можете сделать это с одной строки без того, чтобы хранить массив всех ключей:
echo array_keys($array)[$i];
или, если вам это нужно в цикле
foreach ($array as $key => $value) { echo $key . ':' . $value . "\n"; } //Result: //one:value //two:value2
$array = array( 'one' =>'value', 'two' => 'value2' ); $keys = array_keys($array); echo $keys[0]; // one echo $keys[1]; // two
вы можете сделать это так:
function asoccArrayValueWithNumKey(&$arr, $key) { if (!(count($arr) > $key)) return false; reset($array); $aux = -1; $found = false; while (($auxKey = key($array)) && !$found) { $aux++; $found = ($aux == $key); } if ($found) return $array[$auxKey]; else return false; } $val = asoccArrayValueWithNumKey($array, 0); $val = asoccArrayValueWithNumKey($array, 1); etc...
не пробовал код, но я уверен, что он будет работать.
удачи!
the ключ функция помогла мне и очень проста
расширение ответа оперативной памяти Дейна, то ключ - Это альтернативный способ получить ключ текущего индекса массива. Вы можете создать следующую функцию,
function get_key($array, $index){ $idx=0; while($idx!=$index && next($array)) $idx++; if($idx==$index) return key($array); else return ''; }