Hàm array_merge() trong PHP
Trần Thị Vân
- 1270
- 02/08/2025
Chức năng của Hàm array_merge() trong PHP
Hàm array_merge() trong PHP dùng để lấy cột giá trị của các mảng để nối lại với nhau thành một mảng mới, mảng nào đứng trước thì các phần tử của nó sẽ đứng trước sau khi nối vào mảng mới, cột khóa (key) sẽ được cập nhật lại trong mảng mới.
Cú pháp của Hàm array_merge() trong PHP
$mảng_mới = array_merge($biến_mảng_1, $biến_mảng_2, $biến_mảng_3, $biến_mảng_4);
$biến_mảng_1, $biến_mảng_2, $biến_mảng_3, $biến_mảng_4: Các biến mảng con, nối bao nhiêu mảng cũng được, từ 2 mảng trở lên.
$mảng_mới: Trả kết quả về mảng mới.
Ví dụ Hàm array_merge() trong PHP
<h2>Nối các mảng bình thường với nhau</h2>
<?php
$mangmot = array("Lực","Vân","Quỳnh");
$manghai = array("Dung","Hạ");
$mangba = array("Nhím","Cherry");
$mangmoi = array_merge($mangmot, $manghai, $mangba);
// Kết quả: Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Dung [4] => Hạ [5] => Nhím [6] => Cherry )
print_r($mangmoi);
?>
<h2>Nối mảng bình thường với mảng đa chiều</h2>
<?php
$mangmot = array("Lực","Vân","Quỳnh");
$manghai = array(array("Nhím","Cherry"),"Dung","Hạ");
$mangmoi = array_merge($mangmot,$manghai);
// Kết quả: Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Array ( [0] => Nhím [1] => Cherry ) [4] => Dung [5] => Hạ )
print_r($mangmoi);
?>
<h2>Nối mảng bình thường với mảng liên kết</h2>
<?php
$mangmot = array("Lực","Vân","Quỳnh");
$manghai = array(35=>"Dung", 2 =>"Nhím", 29 =>"Cherry");
$mangmoi = array_merge($mangmot,$manghai);
// Kết quả: Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Dung [4] => Nhím [5] => Cherry )
print_r($mangmoi);
?>
Kết quả:
/////Nối các mảng bình thường với nhau
Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Dung [4] => Hạ [5] => Nhím [6] => Cherry )
/////Nối mảng bình thường với mảng đa chiều
Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Array ( [0] => Nhím [1] => Cherry ) [4] => Dung [5] => Hạ )
/////Nối mảng bình thường với mảng liên kết
Array ( [0] => Lực [1] => Vân [2] => Quỳnh [3] => Dung [4] => Nhím [5] => Cherry )
Những lưu ý khi sử dụng hàm array_merge() trong PHP
array_merge() phù hợp khi cần kết hợp nhiều mảng thành một mảng mới, nhưng kết quả có thể khác với dự đoán nếu các mảng chứa khóa số hoặc khóa chuỗi. Hiểu cách hàm xử lý từng loại khóa sẽ giúp tránh tình trạng dữ liệu bị ghi đè hoặc thay đổi chỉ mục ngoài ý muốn.
array_merge() xử lý khóa số và khóa chuỗi như thế nào?
Với các khóa số, array_merge() không giữ nguyên chỉ mục ban đầu. Các phần tử được đưa vào mảng kết quả theo thứ tự và đánh lại khóa từ 0. Vì vậy, không nên sử dụng chỉ mục cũ để giả định vị trí của dữ liệu sau khi gộp.
<?php
$mang1 = [2 => 'PHP', 5 => 'JavaScript'];
$mang2 = [8 => 'CSS'];
$ketQua = array_merge($mang1, $mang2);
print_r($ketQua);
?>
Kết quả sẽ có các khóa số lần lượt từ 0 đến 2. Điều này đặc biệt cần lưu ý khi dữ liệu được lấy từ nhiều nguồn nhưng vẫn cần duy trì chỉ mục ban đầu.
Đối với khóa chuỗi, nếu hai mảng có cùng một khóa thì giá trị xuất hiện ở mảng phía sau sẽ thay thế giá trị trước đó. Các khóa chuỗi không trùng nhau vẫn được giữ lại trong mảng kết quả.
Khi nào nên dùng array_merge() thay vì nối mảng trực tiếp?
Nên sử dụng array_merge() khi mục tiêu là tạo một mảng mới từ nhiều mảng và chấp nhận quy tắc xử lý khóa của hàm. Cách này rõ ràng hơn khi cần kết hợp danh sách dữ liệu, danh mục hoặc nhiều tập phần tử có cùng cấu trúc.
Nếu yêu cầu quan trọng là giữ nguyên khóa, đặc biệt với các mảng liên kết, cần cân nhắc cách kết hợp khác thay vì sử dụng array_merge() một cách máy móc. Việc lựa chọn phương pháp nên dựa trên ý nghĩa của khóa chứ không chỉ dựa vào mục đích gộp dữ liệu.
array_merge() có làm thay đổi mảng ban đầu không?
array_merge() tạo ra một mảng kết quả mới và không trực tiếp thay đổi các mảng được truyền vào. Vì vậy, có thể sử dụng các mảng ban đầu cho những xử lý khác sau khi thực hiện thao tác gộp.
<?php
$mang1 = ['PHP', 'JavaScript'];
$mang2 = ['CSS', 'HTML'];
$ketQua = array_merge($mang1, $mang2);
print_r($mang1);
print_r($ketQua);
?>
Trong ví dụ trên, $mang1 vẫn giữ dữ liệu ban đầu, còn $ketQua chứa toàn bộ phần tử sau khi kết hợp. Đây là điểm hữu ích khi cần tạo một tập dữ liệu mới nhưng vẫn muốn bảo toàn các mảng nguồn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm array_merge() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *