$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ố
mảng1 | Yêu cầu. Chỉ định một mảng |
mảng2 | Khô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, ...
Giá trị trở lại: |
Phiên bản PHP: |
❮ Tham chiếu mảng PHP