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

$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"]

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

$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"]
2 chứ không phải
$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"]
3. Bối rối? Tôi cũng vậy, hãy giải thích những gì đang xảy ra.

Trước tiên hãy giải thích những gì

$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"]
3 làm, ví dụ như hai mảng sau:

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

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

Sử dụ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"]
3 sẽ dẫn đến những điều sau:

array_merge_recursive($first, $second);

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

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"]
6 gốc,
$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"]
3 đã tạo ra một mảng, với giá trị gốc và giá trị mới cả trong đó.

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ó.

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

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

Trong trường hợp này,

$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"]
3 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"]
9 và nối nó vào giá trị trong mảng
$first = [
    'key' => 'original'
];

$second = [
    'key' => 'override'
];
0, đã là một mảng.

array_merge_recursive($first, $second);

// [
//     'key' => [
//         'original',
//         '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ó thể sử dụ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"]
2, nó có thể xử lý nhiều cấp độ mảng chỉ tốt:

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

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

array_merge($first, $second);

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

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

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

$second = [
    'key' => 'override'
];
2 để 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
$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"]
2.

Nhận thấy một tpyo? Bạn có thể gửi PR để sửa nó. Nếu bạn muốn cập nhật những gì đang xảy ra trên blog này, bạn có thể theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi:

Chuyển đổi mảng đa chiều thành một mảng đơn với các ví dụ mã

Một ngày tốt lành, các bạn. Trong bài đăng này, chúng tôi sẽ kiểm tra cách tìm giải pháp cho Thử thách lập trình có tiêu đề Chuyển đổi mảng đa chiều sang một mảng PHP đơn.

$arrayMult = [ ['a','b'] , ['c', 'd'] ];
$arraySingle = call_user_func_array('array_merge', $arrayMult);
// $arraySingle is now = ['a','b', 'c', 'd'];

Một phương pháp khác được mô tả dưới đây với các ví dụ mã có thể được sử dụng để giải quyết cùng một vấn đề Chuyển đổi mảng đa chiều sang một mảng đơn PHP.

$person = new stdClass();
$person->firstName = "Taylor";
$person->age = 32;

//Convert Single-Dimention Object to array
$personArray = (array) $person;

//Convert Multi-Dimentional Object to Array
$personArray = objectToArray($person);
function objectToArray ($object) {
    if(!is_object($object) && !is_array($object)){
    	return $object;
    }
    return array_map('objectToArray', (array) $object);
}
$singleArray = []; 
foreach ($parentArray as $childArray) 
{ 
    foreach ($childArray as $value) 
    { 
    $singleArray[] = $value; 
    } 
}
$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"]
0
$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

Chúng tôi đã chỉ ra cách giải quyết mảng đa chiều chuyển đổi thành vấn đề php mảng đơn nhìn vào một số trường hợp khác nhau.

Chuyển đổi mảng đa chiều thành Php một chiều đơn

  • $ ArrayMult = [['a', 'b'], ['c', 'd']];
  • $ Arraysingle = call_user_func_array ('Array_merge', $ ArrayMult);
  • // $ mảng hiện tại là = ['a', 'b', 'c', 'd'];

Làm thế nào chúng ta có thể chuyển đổi một mảng đa chiều thành chuỗi mà không cần bất kỳ vòng lặp?

Mảng PHP đa chiều thành chuỗi có thể trong trường hợp bạn cần chuyển đổi một mảng đa chiều thành một chuỗi, bạn có thể muốn sử dụng hàm print_r (). Đây cũng được gọi là Array Array với các phím. Bằng cách thêm vào True True, làm tham số thứ hai của nó, tất cả các nội dung của mảng sẽ được đưa vào chuỗi.

Làm cách nào để tạo nhiều mảng trong một mảng?

Đặt i = 0; const add = []; while (i

Làm thế nào để bạn chuyển đổi một mảng hai chiều thành một mảng một chiều?

Nếu bạn có một mảng các mảng - ví dụ, một mảng của một mảng số nguyên - bạn có thể chuyển đổi nó thành một mảng phẳng duy nhất bằng cách sử dụng phương thức đã tham gia (). Vì Swift gửi lại một loại được tối ưu hóa (FlattenSeance, trong trường hợp này), bạn cũng có thể muốn thêm một chuyển đổi mảng để sử dụng dễ dàng hơn.11-OCT-2019

Làm thế nào để bạn tạo một mảng duy nhất?

const arr = [[{"c": 1}, {"d": 2}], [{"c": 2}, {"d": 3}]]; Chúng tôi được yêu cầu viết một hàm JavaScript có một mảng như đối số đầu tiên và duy nhất. Hàm sau đó sẽ chuyển đổi mảng (tạo một mảng mới) thành mảng các đối tượng xóa các mảng lồng nhau.23-NOV-2020

Làm thế nào chúng ta có thể chuyển đổi một mảng đa chiều thành chuỗi mà không cần bất kỳ vòng lặp trong PHP?

function convert_multi_array ($ mảng) {foreach ($ mảng là $ value) {if (Count ($ value)> 1) {$ mảng = bu tác ("~", $ value); } $ Array = Implode ("&", $ value); } print_r ($ mảng); } $ mảng = mảng (mảng ("màu xanh", "màu đỏ", "màu xanh lá cây"), mảng ("một", "ba", "hai mươi")); convert_multi_array ($ mảng);

Tại sao chúng ta sử dụng cho các vòng với mảng?

Tại sao chúng ta sử dụng cho các vòng với mảng? Vì đối với các vòng lặp có biến đếm được tích hợp, chúng giúp chúng tôi nhanh chóng truy cập tất cả các yếu tố trong một mảng. Mảng được sử dụng để lập trình là gì? Lưu trữ một lượng lớn cùng loại dữ liệu.

Làm thế nào để bạn chuyển đổi mảng kết hợp thành chuỗi?

Sử dụng hàm json_encode () để chuyển đổi một mảng thành một chuỗi để chuyển đổi một mảng thành một chuỗi, một trong những cách phổ biến để làm điều đó là sử dụng hàm json_encode () được sử dụng để trả về biểu diễn JSON của giá trị.18- Tháng 11-2020

Làm cách nào để kết hợp hai mảng?

Để hợp nhất hai mảng, chúng tôi tìm thấy độ dài của nó và được lưu trữ trong biến FAL và SAL tương ứng. Sau đó, chúng tôi tạo một kết quả mảng số nguyên mới lưu trữ tổng chiều dài của cả hai mảng. Bây giờ, sao chép từng phần tử của cả hai mảng vào mảng kết quả bằng cách sử dụng hàm ArrayCopy ().

Làm thế nào để bạn lặp qua một mảng đa chiều trong PHP?

Vòng lặp qua các mảng đa chiều giống như với các mảng một chiều thông thường, bạn có thể sử dụng foreach để lặp qua các mảng đa chiều. Để làm điều này, bạn cần tạo các vòng lặp forest lồng nhau-nghĩa là một vòng lặp bên trong một vòng khác: vòng lặp bên ngoài đọc từng phần tử trong mảng cấp cao nhất.19-JUL-2010

Làm cách nào để tạo một mảng đa chiều thành một mảng trong PHP?

Dòng đơn này sẽ làm điều đó: $ mảng = mảng_column ($ mảng, 'kế hoạch'); Đối số đầu tiên là một mảng | Đối số thứ hai là một khóa mảng.$array = array_column($array, 'plan'); The first argument is an array | The second argument is an array key.

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 cách nào để chuyển đổi nhiều mảng thành một mảng?

Nếu bạn có một mảng các mảng - ví dụ, một mảng của một mảng số nguyên - bạn có thể chuyển đổi nó thành một mảng phẳng duy nhất bằng cách sử dụng phương thức đã tham gia ().using the joined() method.

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.