PHP – получить значение массива с числовым индексом

У меня есть массив вроде:

$array = array('foo' => 'bar', 33 => 'bin', 'lorem' => 'ipsum'); echo native_function($array, 0); // bar echo native_function($array, 1); // bin echo native_function($array, 2); // ipsum 

Таким образом, эта нативная функция вернет значение, основанное на числовом индексе (второй аргумент), игнорируя ассоциированные ключи, ища реальную позицию в массиве.

Есть ли какая-либо нативная функция для этого в PHP или я должен ее написать? благодаря

Solutions Collecting From Web of "PHP – получить значение массива с числовым индексом"

 $array = array('foo' => 'bar', 33 => 'bin', 'lorem' => 'ipsum'); $array = array_values($array); echo $array[0]; //bar echo $array[1]; //bin echo $array[2]; //ipsum 

array_values() будет делать то, что вы хотите:

 $numeric_indexed_array = array_values($your_array); // $numeric_indexed_array = array('bar', 'bin', 'ipsum'); print($numeric_indexed_array[0]); // bar 

Да, для скалярных значений комбинация implode и array_slice будет делать:

 $bar = implode(array_slice($array, 0, 1)); $bin = implode(array_slice($array, 1, 1)); $ipsum = implode(array_slice($array, 2, 1)); 

Или смешайте его с array_values и list (спасибо @nikic), чтобы он работал со всеми типами значений:

 list($bar) = array_values(array_slice($array, 0, 1)); 

Я предлагаю свою идею об этом против любых недостатков функции array_values( ) , потому что я думаю, что это не функция прямого получения. Таким образом, он должен создать копию значений, численно проиндексированных массивом, а затем получить доступ. Если PHP не скрывает метод, который автоматически преобразует целое число в позицию нужного элемента, возможно, немного лучшее решение может состоять из функции, которая запускает массив со счетчиком, пока не приведет к желаемой позиции, а затем вернет элемент, достигший ,

Таким образом, работа была бы оптимизирована для очень большого массива размеров, так как алгоритм был бы лучшим индексом для малого, немедленно останавливаясь. Однако в решении, выделенном array_values( ) , оно связано с циклом, проходящим через весь массив, даже если, к примеру, мне нужно получить доступ к $ array [1].

 function array_get_by_index($index, $array) { $i=0; foreach ($array as $value) { if($i==$index) { return $value; } $i++; } // may be $index exceedes size of $array. In this case NULL is returned. return NULL; }