É possível preceder uma matriz associativa com pares de chave => valor literal? Eu sei que array_unshift () funciona com teclas numéricas, mas espero algo que funcione com teclas literais.
Como exemplo, gostaria de fazer o seguinte:
$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');
// prepend magic
$resulting_array = ('fruit1'=>'cherry',
'fruit2'=>'blueberry',
'fruit3'=>'apple',
'fruit4'=>'orange');
php
arrays
associative-array
Colin Brock
fonte
fonte
A resposta é não. Você não pode preceder uma matriz associativa com um par de valores-chave.
No entanto, você pode criar uma nova matriz que contém o novo par de valores-chave no início da matriz com o operador de união
+
. O resultado é um array inteiramente novo, e criar o novo array tem complexidade O (n).A sintaxe está abaixo.
Nota: Não use array_merge (). array_merge () sobrescreve as chaves e não preserva as chaves numéricas.
fonte
Em sua situação, você deseja usar array_merge ():
Para prefixar um único valor, para uma matriz associativa, em vez de array_unshift (), novamente use array_merge ():
fonte
@Cletus está certo. Apenas para adicionar, se a ordem dos elementos nas matrizes de entrada for ambígua e você precisar que a matriz final seja classificada, você pode querer ksort :
fonte
ksort
retorna booleano, então o acima precisa ser feito como duas instruções, não uma, por exemplo$a = $array1 + $array2; ksort($a);
, caso contrário,$resulting_array
será um valor booleano e não o array que você esperava.Usando o mesmo método de @mvpetrovich, você pode usar a versão abreviada de uma matriz para reduzir a sintaxe.
Referências:
PHP: array_merge ()
PHP: Arrays - Manual
fonte