@nospiou вот так сделал PHP: $arr = [ '0' => 'раз', '1' => 'два', '2' => 'три', '3' => 'четыре', '4' => 'пять', '5' => 'шесть', '6' => 'семь', ]; $val = array_values($arr); $countKey = count($arr); $mass = ['0'=>'']; for($i = 1; $i <= $countKey; $i++) { $mass[]=$i; } unset($mass[0]); $c = array_combine($mass, $val); echo '<pre>'; print_r($c); echo '</pre>';
А мой вариант чем не подошел? Слишком просто?) PHP: $arr = ['1', '2']; array_unshift($arr, '0'); unset($arr[0]); print_r($arr);
как всё сложно в твоей головушке PHP: $input = ['раз', 'два', 'три', 'четыре', 'пять']; $output = []; foreach ( $input as $k => $val ) { $i = $k + 1; $output[$i] = $val; }
PHP: function getByOrderNum($arr, $num) { return $arr[$num-1]; } $array = [4,7,9,23]; echo getByOrderNum($array, 2); // 7
@mkramer этот способ не подходит, потому что массив создаётся автоматически, например результат из базы.
Ну решения тебе подсказали уже, поэтому пофлудим И почему тебе не без разницы, с какого числа начинается индексация? Я как-то к нулю быстро привык, когда с Pascal (где принято с единицы, особенно в старом паскале, на котором я учился программированию) перешёл на C, где всегда с нуля.
Вариант с array_combine может выглядеть так: PHP: $arr2 = array_combine(range(1, count($arr)), $arr);