Không bao giờ sử dụng array_merge trong Vòng lặp
Người điều hành trải rộng để giải cứu
Làm phẳng mảng một cấpTôi đã thấy mọi người sử dụng hàm
$lists = [
[1, 2],
[3, 4],
[5, 6],
];$merged = [];foreach($lists as $list) {
$merged = array_merge($merged, $list);
}// $merged === [1, 2, 3, 4, 5, 6];
0 trong một vòng lặp như$lists = [
[1, 2],
[3, 4],
[5, 6],
];$merged = [];foreach($lists as $list) {
$merged = array_merge($merged, $list);
}// $merged === [1, 2, 3, 4, 5, 6];
Đây là một thực tế rất tồi vì nó là kẻ giết hiệu suất (bộ nhớ)
Thay vào đó, bạn nên sử dụng toán tử trải rộng (trong PHP kể từ 5. 6. )
$lists = [
[1, 2],
[3, 4],
[5, 6],
];$merged = array_merge(...$lists);
// === [1, 2, 3, 4, 5, 6];
Giải nén một mảng assoc
Điều gì sẽ xảy ra nếu bạn có một mảng assoc thay vì như thế này?
$lists = [
'key-1' => [1, 2],
'key-2' => [3, 4],
'key-3' => [5, 6],
];
Trong trường hợp đó, bạn sẽ cần giải nén các giá trị của nó
$merged = array_merge(...array_values($lists));
// === [1, 2, 3, 4, 5, 6];
Trong Lập trình hàm, điều này được gọi là làm phẳng danh sách
Không có vòng lặp & không còn vấn đề về hiệu suất
Làm phẳng một mảng đa cấpĐiều gì sẽ xảy ra nếu bạn muốn làm phẳng một mảng đa cấp như thế này?
$lists = [[1], 2, [[3, 4], 5], [[[]]], [[[6]]], 7, 8, []];
Hoặc thích cái này, ngay cả với khóa-giá trị?
$lists = [
'key-1' => [
1,
[2],
'key-2' => [
3,
[
'key-3' => [4, 5],
],
],
],
6,
'key-4' => [7, 8],
];
Trong những trường hợp này, bạn có thể muốn sử dụng thư viện tiêu chuẩn nội bộ
$merged = iterator_to_array(
new RecursiveIteratorIterator(
new RecursiveArrayIterator($lists)
),
$use_keys = false
);// $merged === [1, 2, 3, 4, 5, 6, 7, 8];
. Kết luậnThông thường, biết cách làm phẳng mảng “2 cấp” có thể là đủ
________số 8Còn không thì thư viện chuẩn nội bộ sẽ giúp bạn xử lý
Người giới thiệu- https. //wiki. php. net/rfc/spread_operator_for_array
- https. // mã hoa hồng. org/wiki/Flatten_a_list
- https. // kalessil. github. io/phpinspectionsea/docs/hiệu suất. html#slow-array-function-used-in-loop
Hàm array_merge( ) là một hàm có sẵn của PHP. Hàm này được sử dụng để hợp nhất các phần tử hoặc giá trị của hai hoặc nhiều mảng lại với nhau thành một mảng duy nhất. Chức năng này đã được giới thiệu trong PHP 4. 0