Hướng dẫn php merge multidimensional array into one - php hợp nhất mảng đa chiều thành một

$blocked_dates = array(
                    '2014' => Array
                        (
                            '8' => Array
                                (
                                    '3' => '1',
                                    '4' => '1',                                     
                                    '6' => '1',                                     
                                    '10' => '1',
                                    '15' => '1',
                                    '25' => '1'

                                )

                        ),
                    '2015' => Array
                        (
                            '9' => Array
                                (
                                    '3' => '1',
                                    '4' => '1',                                    
                                    '6' => '1',                                     
                                    '10' => '1',
                                    '15' => '1',
                                    '25' => '1'

                                )

                        )    

                );

Resutl (một mảng một chiều):

$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]

Chỉ sử dụng một tham số mảng có các phím số nguyên: $ a = mảng (3 => "màu đỏ", 4 => "màu xanh lá cây") ;.

Nếu bạn muốn tham gia hai mảng đa chiều trong PHP, bạn vẫn nên sử dụng array_merge chứ không phải array_merge_recursive. Bối rối? Tôi cũng vậy, hãy giải thích những gì đang xảy ra.

$first = [
    'key' => 'original'
];

$second = [
    'key' => 'override'
];

Trước tiên hãy giải thích những gì array_merge_recursive làm, ví dụ như hai mảng sau:

array_merge_recursive($first, $second);

// [
//     'key' => [
//         'original',
//         'override',
//     ],
// ]

Sử dụng array_merge_recursive sẽ dẫn đến những điều sau:

Thay vào đó, vượt qua giá trị

$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]
1 gốc, array_merge_recursive đã tạo ra một mảng, với giá trị gốc và giá trị mới cả trong đó.

$first = [
    'key' => ['original']
];

$second = [
    'key' => 'override'
];

Mặc dù điều đó có vẻ lạ trong ví dụ đơn giản này, nhưng nó thực sự hữu ích hơn trong trường hợp một trong những giá trị đã là một mảng và bạn muốn hợp nhất một mục khác trong mảng đó, thay vì ghi đè lên nó.

array_merge_recursive($first, $second);

// [
//     'key' => [
//         'original',
//         'override',
//     ],
// ]

Trong trường hợp này, array_merge_recursive sẽ mang lại kết quả tương tự như ví dụ đầu tiên: nó lấy giá trị từ mảng

$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]
4 và nối nó vào giá trị trong mảng
$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]
5, đã là một mảng.

$first = [
    'level 1' => [
        'level 2' => 'original'
    ]
];

$second = [
    'level 1' => [
        'level 2' => 'override'
    ]
];

array_merge($first, $second);

// [  
//     'level 1' => [
//         'level 2' => 'override'
//     ]
// ]

Vì vậy, nếu bạn muốn hợp nhất các mảng đa chiều, bạn chỉ cần sử dụng array_merge, nó có thể xử lý nhiều cấp độ mảng tốt:

Tất cả những gì đang được nói, bạn cũng có thể sử dụng toán tử

$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]
7 để hợp nhất các mảng đa chiều, nhưng nó sẽ hoạt động hơi khác so với array_merge.

❮ Tham chiếu mảng PHP

Thí dụ

Hợp nhất hai mảng thành một mảng:

"màu đỏ", "b" => "màu xanh lá cây"); $ a2 = mảng ("c" => "blue", "b" => "màu vàng"); print_r (Array_merge_Recursive ($ A1, $ A2)); ?>
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));
?>

Hãy tự mình thử »


Định nghĩa và cách sử dụng

Hàm mảng_merge_Recursive () hợp nhất một hoặc nhiều mảng thành một mảng.

Sự khác biệt giữa hàm này và hàm mảng_merge () là khi hai hoặc nhiều phần tử mảng có cùng một khóa. Thay vì ghi đè các khóa, hàm mảng_merge_Recursive () tạo ra giá trị dưới dạng mảng.

Lưu ý: Nếu bạn chỉ gán một mảng cho hàm mảng If you assign only one array to the array_merge_recursive() function, it will behave exactly the same as the array_merge() function.


Cú pháp

Array_merge_Recursive (Array1, Array2, Array3, ...)

Giá trị tham số

Tham sốSự mô tả
mảng1Yêu cầu. Chỉ định một mảng
mảng2Không bắt buộc. Chỉ định một mảng
Array3, ...Không bắt buộc. Chỉ định một mảng


Array3, ...

Chi tiết kỹ thuậtGiá trị trở lại:
Trả về mảng hợp nhấtPhiên bản PHP:

❮ Tham chiếu mảng PHP


Làm thế nào để hợp nhất một mảng đa chiều trong PHP?

Hàm mảng_merge_Recursive () hợp nhất một hoặc nhiều mảng thành một mảng. Sự khác biệt giữa hàm này và hàm mảng_merge () là khi hai hoặc nhiều phần tử mảng có cùng một khóa. Thay vì ghi đè các khóa, hàm mảng_merge_Recursive () tạo ra giá trị dưới dạng mảng.array_merge_recursive() function merges one or more arrays into one array. The difference between this function and the array_merge() function is when two or more array elements have the same key. Instead of override the keys, the array_merge_recursive() function makes the value as an array.

Làm thế nào để bạn hợp nhất các mảng đa chiều?

Hợp nhất một mảng đa chiều giống như của một mảng đơn giản. Nó lấy hai mảng làm đầu vào và hợp nhất chúng. Trong một mảng đa chiều, chỉ mục sẽ được gán theo thứ tự gia tăng và sẽ được thêm vào sau mảng cha. Bây giờ, chúng ta hãy lấy ví dụ về một nhân viên có hai địa chỉ.It takes two arrays as input and merges them. In a multidimensional array, the index will be assigned in increment order and will be appended after the parent array. Now, let's take the example of an employee who has two addresses.

Làm cách nào để làm phẳng một mảng đa chiều trong PHP?

Làm thế nào để bạn làm phẳng một mảng đa chiều ?..
một.Sử dụng Concat () và Ứng dụng () Let FlatArray = [].Concat ..
b.Sử dụng toán tử lây lan.Đặt FlatArray = [].concat (mảng);// Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15].
c.Sử dụng phương pháp giảm.Đặt FlatArray = mảng.Giảm ((acc, curval) => {return acc ..

Làm thế nào để hợp nhất mảng mảng trong PHP?

Hàm php mảng_merge ()..
Hợp nhất hai mảng thành một mảng: $ a1 = mảng ("màu đỏ", "màu xanh lá cây");$ a2 = mảng ("màu xanh", "vàng");....
Hợp nhất hai mảng kết hợp thành một mảng: $ a1 = mảng ("a" => "red", "b" => "màu xanh lá cây");$ a2 = mảng ("c" => "blue", "b" => "màu vàng");....
Chỉ sử dụng một tham số mảng có các phím số nguyên: $ a = mảng (3 => "màu đỏ", 4 => "màu xanh lá cây") ;.