Menu
CoddyTech

Gộp các mảng kết hợp

Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 15 trên 68.

Mặc dù array_merge() hoạt động trơn tru với các mảng có chỉ số, cách hoạt động của hàm này thay đổi đáng kể khi làm việc với các mảng kết hợp. Điểm khác biệt chính nằm ở cách hàm xử lý các khóa chuỗi trùng lặp giữa những mảng được gộp.

Khi gộp các mảng kết hợp, nếu cả hai mảng có cùng một khóa chuỗi, giá trị từ mảng đứng sau sẽ ghi đè giá trị từ mảng đứng trước:

<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Đầu ra: Array ( [theme] => dark [language] => english [notifications] => false )
?>

Lưu ý rằng "theme" đã đổi từ "light" thành "dark" và "notifications" đã đổi từ true thành false, trong khi "language" vẫn là "english" vì giá trị này không bị ghi đè. Hành vi này khiến array_merge() trở nên lý tưởng cho các hệ thống cấu hình, nơi bạn muốn các tùy chọn mặc định bị ghi đè bởi tùy chọn của người dùng.

Thứ tự đối số rất quan trọng: các giá trị từ những mảng được liệt kê sau trong lời gọi hàm sẽ ghi đè các giá trị đứng trước. Hành vi ghi đè này chỉ áp dụng cho khóa chuỗi; các khóa số luôn được đánh lại chỉ số theo thứ tự tuần tự, giống như với mảng được đánh chỉ số.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận được hai đầu vào: một mảng cấu hình mặc định và một mảng tùy chọn của người dùng, cả hai đều ở định dạng JSON. Đọc cả hai đầu vào, chuyển mỗi chuỗi JSON thành một mảng kết hợp, dùng array_merge() để kết hợp chúng (trong đó tùy chọn của người dùng ghi đè cấu hình mặc định), rồi in ra cấu hình đã kết hợp bằng print_r().

Định dạng đầu vào: Hai dòng, mỗi dòng chứa một đối tượng JSON biểu diễn một mảng kết hợp (ví dụ: {"theme":"light","language":"english"})

Đầu ra mong đợi: Mảng cấu hình đã kết hợp, trong đó tùy chọn của người dùng ghi đè các giá trị mặc định, được hiển thị bằng print_r()

Tự làm thử

<?php
// Đọc hai đầu vào JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);

// Chuyển các chuỗi JSON thành mảng kết hợp
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);

// TODO: Viết code bên dưới để merge các mảng


// In ra cấu hình sau khi merge
print_r($mergedConfig);
?>
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch PHP online