PHP 8.1.0 RC 2 available for testing

array_merge

(PHP 4, PHP 5, PHP 7, PHP 8)

array_mergeCombina um ou mais arrays

Descrição

array_merge(array $array1, array $... = ?): array

Funde os elementos de dois ou mais arrays de forma que os elementos de um são colocados no final do array anterior. Retorna o array resultante da fusão.

Se os arrays dados têm as mesmas chaves string, então o último valor para uma chave irá sobrescrever o valor anterior. Se, no entanto, os arrays tem as mesmas chaves numéricas, o último valor para uma chave não sobrescreverá o valor original, e sim adicionado ao array resultante.

Se apenas uma array é dada e a array é indexada numericamente, as chaves são reindexadas de uma maneira continua.

Parâmetros

array1

O array inicial para fundir.

...

A lista variável de arrays para fundir recursivamente.

Valor Retornado

Retorna o array resultante.

Exemplos

Exemplo #1 Exemplo de array_merge()

<?php
$array1 
= array("cor" => "vermelho"24);
$array2 = array("a""b""cor" => "verde""forma" => "trapezoide"4);
$result array_merge($array1$array2);
print_r($result);
?>

O exemplo acima irá imprimir:

Array
(
    [cor] => verde
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [forma] => trapezoide
    [4] => 4
)

Exemplo #2 Exemplo simples de array_merge()

<?php
$array1 
= array();
$array2 = array(=> "data");
$result array_merge($array1$array2);
?>

Não esqueça que as chaves numéricas serão reordenadas!

Array
(
    [0] => data
)

Se você deseja apenas adicionar os elementos do segundo array no primeiro, sem sobrescrever os elementos e sem causar a reindexação, utilize o operador +:

<?php
$array1 
= array(=> 'zero_a'=> 'two_a'=> 'three_a');
$array2 = array(=> 'one_b'=> 'three_b'=> 'four_b');
$result $array1 $array2;
var_dump($result);
?>

As chaves do primeiro array são preservados. Se uma chave existir em dois arrays, então o elemento do primeiro array será preservado e o elemento de mesma chave no segundo array será descartado.

array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}

Exemplo #3 array_merge() com tipos não array

<?php
$beginning 
'foo';
$end = array(=> 'bar');
$result array_merge((array)$beginning, (array)$end);
print_r($result);
?>

O exemplo acima irá imprimir:

    Array
    (
        [0] => foo
        [1] => bar
    )

Veja Também

add a note add a note

User Contributed Notes 2 notes

up
263
Julian Egelstaff
12 years ago
In some situations, the union operator ( + ) might be more useful to you than array_merge.  The array_merge function does not preserve numeric key values.  If you need to preserve the numeric keys, then using + will do that.

ie:

<?php

$array1
[0] = "zero";
$array1[1] = "one";

$array2[1] = "one";
$array2[2] = "two";
$array2[3] = "three";

$array3 = $array1 + $array2;

//This will result in::

$array3 = array(0=>"zero", 1=>"one", 2=>"two", 3=>"three");

?>

Note the implicit "array_unique" that gets applied as well.  In some situations where your numeric keys matter, this behaviour could be useful, and better than array_merge.

--Julian
up
3
fsb at thefsb dot org
1 year ago
We no longer need array_merge() as of PHP 7.4.

    [...$a, ...$b]

does the same as

    array_merge($a, $b)

and can be faster too.

https://wiki.php.net/rfc/spread_operator_for_array#advantages_over_array_merge
To Top