@ 2astalavista, isso não funciona: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent
@ returnthis.lau_ Neste caso, você deve usar o loop - a partir de -1 - para fazê-lo funcionar: for ($i = -1; $i < count($a)-1; $i++)como o link referenciado mostrou, mas é fácil esquecer, por isso não prefiro mais essa solução.
E se você precisar de chaves literais, e não numéricas?
Evan
4
@Evan, a documentação para array_unshiftdiz o seguinteAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
craned
1
Existem dois problemas: 1) reindexar a matriz 2) não pode adicionar itens com um índice.
Nabi KAZ
2
Se você possui uma matriz associativa ou precisa preservar chaves, consulte os exemplos de usuário aqui: php.net/manual/en/function.array-unshift.php, existem alguns bons exemplos de como fazer isso!
Vallier
112
No caso de uma matriz associativa ou matriz numerada em que você não deseja alterar as chaves da matriz:
Atenção! "O operador + retorna a matriz da direita anexada à matriz da esquerda; para chaves existentes em ambas as matrizes, os elementos da matriz da esquerda serão usados e os elementos correspondentes da matriz da direita serão ignorado ". - Veja: stackoverflow.com/a/2140094/3411766
cottton
A solução é boa porque pode adicionar item com um índice e não reindexar a matriz; Mas tenha apenas uma observação sobre remover o item na matriz à direita, se houver o mesmo índice na matriz à esquerda.
$arr[-1] = $item;
Encontrado aqui: stackoverflow.com/a/15252657/669677print_r($arr)
=>Array ( [0] => a, [1] => b, [-1] => c )
for ($i = -1; $i < count($a)-1; $i++)
como o link referenciado mostrou, mas é fácil esquecer, por isso não prefiro mais essa solução.Respostas:
Use array_unshift ($ array, $ item);
Darei à você
fonte
array_unshift
diz o seguinteAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
No caso de uma matriz associativa ou matriz numerada em que você não deseja alterar as chaves da matriz:
array_merge
não funciona, pois sempre reindexa a matriz.fonte
Usar função
array_unshift
fonte
Inserir um item no início de uma matriz associativa com string / chave de índice personalizada
RESULTADO
fonte
Isso vai ajudar
http://www.w3schools.com/php/func_array_unshift.asp
fonte
Use array_unshift () para inserir o primeiro elemento em uma matriz.
O usuário array_shift () para remover o primeiro elemento de uma matriz.
fonte
Ou você pode usar uma matriz temporária e excluir a real se quiser alterá-la durante o ciclo:
a saída será:
e quando estiver fazendo isso enquanto estiver em ciclo, limpe
$temp_array
após anexar o item à matriz.fonte
Com índice personalizado:
fonte
Para uma matriz associativa, você pode apenas usar mesclagem.
fonte