Если у меня есть:
$array = array( 'one' =>'value', 'two' => 'value2' );
как мне получить строку one
назад из $array[1]
?
Если у меня есть:
$array = array( 'one' =>'value', 'two' => 'value2' );
как мне получить строку one
назад из $array[1]
?
Нет. В вашем массиве нет ключа [1]
. Вы могли:
Создайте новый массив, содержащий ключи:
$newArray = array_keys($array);
echo $newArray[0];
Но значение "один" находится в $newArray[0]
, а не [1]
.
Ярлык:
echo current(array_keys($array));
Получить первый ключ массива:
reset($array);
echo key($array);
Получить ключ, соответствующий значению "значение":
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...
Не пробовал код, но я уверен, что он сработает.
Удачи!
функция key помогла мне и очень проста
Расширяясь в ответ Рам Дана, функция key является альтернативным способом получения ключа текущего индекса массива. Вы можете создать следующую функцию,
function get_key($array, $index){
$idx=0;
while($idx!=$index && next($array)) $idx++;
if($idx==$index) return key($array);
else return '';
}