php: как получить ассоциативный массив с числовым индексом?

Если бы у меня был:

$array = array( 'one' =>'value', 'two' => 'value2' ); 

как мне получить строку обратно из $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... 

Не пробовал код, но я уверен, что он сработает.

Удачи!

ключевая функция помогла мне и очень проста

Расширяясь в ответ Рам Дана, ключевая функция является альтернативным способом получить ключ от текущего индекса массива. Вы можете создать следующую функцию,

  function get_key($array, $index){ $idx=0; while($idx!=$index && next($array)) $idx++; if($idx==$index) return key($array); else return ''; }