@ 2astalavista, это не работает: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
Laurent
@ returnthis.lau_ этот случай вы должны использовать для цикла - начиная с -1 - чтобы он работал: for ($i = -1; $i < count($a)-1; $i++)как показала ссылочная ссылка, но это легко забыть, поэтому я больше не предпочитаю это решение.
А что если вам нужны буквенные, а не числовые ключи?
Эван
4
@Evan, документация для array_unshiftговорит следующееAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
вытянутый
1
Есть две проблемы: 1) переиндексация массива 2) невозможно добавить элемент с индексом.
Наби КАЗ
2
Если у вас есть ассоциативный массив или вам необходимо сохранить ключи, посмотрите примеры пользователей здесь: php.net/manual/en/function.array-unshift.php есть пара хороших примеров того, как этого добиться!
Вальер
112
В случае ассоциативного массива или пронумерованного массива, где вы не хотите изменять ключи массива:
Внимание! «Оператор + возвращает правый массив, добавленный к левому массиву; для ключей, которые существуют в обоих массивах, будут использоваться элементы из левого массива, а соответствующие элементы из правого массива будут проигнорировано «. - См .: stackoverflow.com/a/2140094/3411766
Котттон
Решение это хорошо, потому что можно добавить элемент с индексом, а не переиндексировать массив; Но обратите внимание на удаление элемента в правом массиве, если в левом массиве есть такой же индекс.
$arr[-1] = $item;
Найдено здесь: stackoverflow.com/a/15252657/669677print_r($arr)
=>Array ( [0] => a, [1] => b, [-1] => c )
for ($i = -1; $i < count($a)-1; $i++)
как показала ссылочная ссылка, но это легко забыть, поэтому я больше не предпочитаю это решение.Ответы:
Использовать array_unshift ($ array, $ item);
дам тебе
источник
array_unshift
говорит следующееAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
В случае ассоциативного массива или пронумерованного массива, где вы не хотите изменять ключи массива:
array_merge
не работает, так как всегда переиндексирует массив.источник
Использовать функцию
array_unshift
источник
Вставить элемент в начало ассоциативного массива со строкой / пользовательским индексным ключом
РЕЗУЛЬТАТ
источник
Это поможет
http://www.w3schools.com/php/func_array_unshift.asp
источник
Используйте array_unshift (), чтобы вставить первый элемент в массив.
Пользователь array_shift () удаляет первый элемент массива.
источник
Или вы можете использовать временный массив, а затем удалить реальный, если хотите изменить его в цикле:
вывод будет:
и когда вы делаете это во время цикла, вы должны очистить
$temp_array
после добавления элемента в массив.источник
С пользовательским индексом:
источник
Для ассоциативного массива вы можете просто использовать слияние.
источник