Como unir os valores de dois ou mais arrays em PHP

Bom dia, pessoal! Recentemente me deparei com uma função do PHP que teria me poupado vários foreach's. Muitos iniciantes como eu podem não conhecer essa função, então, para praticar um pouco e não esquecer mais dela, vou escrever um breve resumo sobre o que ela faz e como podemos utilizá-la.

A Função

Enfim, a função em questão é a "array_merge()", ela está disponível desde o PHP 4 e, como o nome sugere, ela funde um ou mais arrays em um, só adicionando os valores de um array ao final do outro. Exemplo:

$arr1 = ['foo', 'bar'];

$arr2 = ['apple', 'orange'];

array_merge($arr1, $arr2);

O código acima irá imprimir o resultado:

Array
(
    [0] => foo
    [1] => bar
    [2] => apple
    [3] => orange
)

No caso de arrays chave => valor, se dois arrays tiverem uma chave com o mesmo nome, o valor dessa chave será o valor da chave do último array adicionado. Exemplo:

$arr1 = ['chave' => 'foo'];

$arr2 = ['chave' => 'bar'];

$arr3 = [
'chave' => 'apple',
'fruit' => 'banana'
];

array_merge($arr1, $arr2, $arr3);

O código acima irá imprimir o resultado:

Array
(
    [chave] => apple
    [fruit] => banana
)

Onde e Como Utilizar

Suponhamos que você esteja trabalhando em um pequeno projeto de um aplicativo em que você possa criar listas de compras de mercado e, uma das funções que você deseja adicionar ao sistema é o de poder unir duas listas de compras diferentes. Como você pode fazer isso?

Você pode fazer de uma maneira mais manual, onde você deverá percorrer manualmente cada array, adicionando os valores em um novo array. Dessa forma:

$lista_1 = [
'1x Leite condensado',
'2x Garrafa de leite',
'1x Caixa de ovos',
];

$lista_2 = [
    '1x Saco de farinha',
    '2x Caixa de morango',
    '1x Saco de Açúcar',
];

$nova_lista = array();

foreach($lista_1 as $item){
    $nova_lista[] = $item;
}

foreach($lista_2 as $item){
    $nova_lista[] = $item;
}

Ou você pode utilizar a função array_merge e poupar algumas linhas de código. Dessa forma:

$lista_1 = [
    '1x Leite condensado',
    '2x Garrafa de leite',
    '1x Caixa de ovos',
];

$lista_2 = [
    '1x Saco de farinha',
    '2x Caixa de morango',
    '1x Saco de Açúcar',
];

$nova_lista = array_merge($lista_1, $lista_2);

Os dois códigos acima vão imprimir o mesmo resultado:

Array
(
    [0] => 1x Leite condensado
    [1] => 2x Garrafa de leite
    [2] => 1x Caixa de ovos
    [3] => 1x Saco de farinha
    [4] => 2x Caixa de morango
    [5] => 1x Saco de Açúcar
)

Conclusão

A função array_merge pode ser muito útil no dia a dia, poupando algumas linhas e deixando o nosso código mais legível, porém, devemos ter cuidado com sua utilização, principalemente por conta da substitução de valores no caso dos arrays chave=>valor. Por isso, é sempre bom consultar a documentação pra entender como a função funciona, além de realizar testes para verificar se o processo está ocorrendo conforme o esperado.

Quem tiver alguma observação, pontuação ou dica, por favor, não deixe de comentar! Obrigado! :smile:

Muito útil saber dessa função, estou aprendendo/trabalhando com PHP, obrigado!