1. Hàm array_merge() trong PHP

Hàm array_merge() trong PHP giúp ta nối hai hay nhiều mảng lại với nhau thành một mảng duy nhất. Có nghĩa là hàm này sẽ hợp nhất các phần tử hoặc giá trị của hai hoặc nhiều mảng với nhau thành một mảng duy nhất. Hay ta có thể hiểu đơn giản là mảng sau sẽ được viết tiếp vào cuối mảng trước đó.

Nếu như trong quá trình ta nối các mảng lại với nhau có những key dạng chuỗi giống nhau trong các mảng thì giá trị key sau sẽ ghi đè lên giá trị key trước. Nhưng nếu key là dạng số thì sẽ không bị ghi đè lên giá trị ban đầu mà sẽ được thêm vào. Key sẽ được đánh số theo thứ tự tăng dần bắt đầu từ số 0 , 1 , 2 , 3 , … Hàm này được giới thiệu và sử dụng từ phiên bản PHP 4.0

2. Cú pháp hàm array_merge() trong PHP

Ta có cú pháp của hàm array_merge() trong PHP là :

array_merge(array1, array2, array3, ...)

Trong đó : array1 , array2 , array3 , … là các mảng dữ liệu đầu vào mà chúng ta cần nối với nhau. Ta có thể truyền vào n mảng tùy thích với việc các mảng sẽ được phân tác nhau bằng dấu phẩy ( , ) trong hàm. Và ta bắt buộc phải truyền ít nhất một mảng vào trong hàm.

Hàm này sẽ trả về một mảng mới mà trong đó các mảng ta nhập vào hàm đã được nối lại với nhau. Như mình đã nói ở trên nếu trong mảng có giá trị key dạng chuỗi giống nhau thì value của key sau sẽ ghi đè lên value của key trước. Còn nếu key ở dạng số thì key sẽ không bị ghi đè khi có key cùng nhau và key được đánh số tăng dần từ 0.

Ví dụ : nối hai mảng đơn giản thành một mảng

<?php
$a1=array("PHP","Java");
$a2=array("Python","HTML");
print_r(array_merge($a1,$a2));
?>

Kết quả

Array ( [0] => PHP [1] => Java [2] => Python [3] => HTML )

Đây là một ví dụ khá đơn giản. Với hai mảng cho trước ta chỉ cần sử dụng hàm array_merge() để kết hợp hai mảng này thành một. Và ta có thể thấy các key ở mảng mới được đánh số theo thứ tự 0 , 1 , 2 , 3 .

Chú ý

Nếu ta muốn nối mảng lại mà phần tử mảng không bị ghi đè khi giống nhau ta có thể sử dụng toán tử cộng.

<?php
$array1 = array("0" => 'PHP', "1" => 'Java', "3" => 'Python');
$array2 = array("1" => 'HTML', "3" => 'CSS', "4" => 'C');
$result = $array1 + $array2;
echo '<pre>';
print_r($result);
?>

Kết quả

Array
(
    [0] => PHP
    [1] => Java
    [3] => Python
    [4] => C
)

Tuy nhiên với toán tử công sẽ không ghi đè mà xóa luôn key giống nhau. Nó sẽ chỉ lấy key xuất hiện đầu tiên thôi nhé. Đây là một cách cho bạn tham khảo thêm để tùy vào bài toán mà ta sử dụng cho đúng.

3. Ví dụ về hàm array_merge() trong PHP

Ví dụ 1: hợp nhất hai mảng với việc có key trùng trong hai mảng

<?php
$array1 = array(2, 4,"PHP" => "5");
$array2 = array("a", "b", "PHP" => "6", "HTML" => "CSS", 4);
$result = array_merge($array1, $array2);
echo '<pre>';
print_r($result);
?>

Kết quả

Array
(
    [0] => 2
    [1] => 4
    [PHP] => 6
    [2] => a
    [3] => b
    [HTML] => CSS
    [4] => 4
)

Ở ví dụ này ta có thể thấy hai mảng input có key“PHP” trùng nhau. Khi sử dụng hàm array_merge() thì value xuất hiện sau sẽ ghi đè lên value của key xuất hiện trước. Ở đây ta có kết quả value của mảng mới với key “PHP” là 6. Và với key có giá trị số thì key này sẽ không bị ghi đè thay vào đó key được đánh số thứ tự bắt đầu từ 0

Các bạn cũng có thể tham khảo thêm một ví dụ nữa

<?php
$array1 = array(2, 4,"PHP" => "5");
$array2 = array("a", "b", "PHP" => "6", "HTML" => "CSS", 4);
$array3 = array("PHP"=>"laptrinhtudau", 4, "a");

$result = array_merge($array1, $array2, $array3);

echo '<pre>';
print_r($result);
?>

Kết quả

Array
(
    [0] => 2
    [1] => 4
    [PHP] => laptrinhtudau
    [2] => a
    [3] => b
    [HTML] => CSS
    [4] => 4
    [5] => 4
    [6] => a
)

Ví dụ 2: chỉ truyền một mảng vào hàm

<?php 
$a1= array(1 => "PHP", 6=>"Python","XML"=>"8", 4=>"Java", "HTML"=>"CSS","XML"=>"80"); 
$res = array_merge($a1);
echo '<pre>';
print_r($res); 
?>

Kết quả

Array
(
    [0] => PHP
    [1] => Python
    [XML] => 80
    [2] => Java
    [HTML] => CSS
)

Đây là kết quả của việc nếu chỉ truyền một mảng vào hàm. Ta sẽ reset lại key có dạng số thành những key có thứ tự tăng dần bắt đầu từ 0. Các key dạng chuỗi vẫn dữ nguyên. Và nếu trong mảng có key dạng chuỗi giống nhau thì chúng vẫn bị áp dụng việc ghi đè.

Ví dụ 3: nối các mảng đa chiều

<?php  
$a1 = array
  (
  array("Iphone X",22,18),
  array("Sony Z10",15,13),
  array("Samsung Note 10",5,2),
  array("Xiaomi 6",17,15)
  );
$a2 = array  
  (  
  array(1,"sonoo",400000),  
  array(2,"john",500000),  
  array(3,"rahul",300000)  
  );
$res = array_merge($a1,$a2);
echo '<pre>';
print_r($res);  
?>

Kết quả

Array
(
    [0] => Array
        (
            [0] => Iphone X
            [1] => 22
            [2] => 18
        )

    [1] => Array
        (
            [0] => Sony Z10
            [1] => 15
            [2] => 13
        )

    [2] => Array
        (
            [0] => Samsung Note 10
            [1] => 5
            [2] => 2
        )

    [3] => Array
        (
            [0] => Xiaomi 6
            [1] => 17
            [2] => 15
        )

    [4] => Array
        (
            [0] => 1
            [1] => sonoo
            [2] => 400000
        )

    [5] => Array
        (
            [0] => 2
            [1] => john
            [2] => 500000
        )

    [6] => Array
        (
            [0] => 3
            [1] => rahul
            [2] => 300000
        )

)

Sử dụng hàm array_merge() trong mảng đa chiều cũng tương tự như với mảng thông thường.

Ví dụ 4: gộp dữ liệu không phải mảng

<?php
$a1 = 'PHP';
$a2 = array(1 => 'Java');
$a3 = 'Python';
$result = array_merge((array)$a1, $a2, (array)$a3);
print_r($result);
?>

Kết quả

Array ( [0] => PHP [1] => Java [2] => Python )

Để thực hiện với giá trị không phải mảng cũng rất đơn giản. Ta chỉ cần ép kiểu chúng về dạng mảng là xong.