In Laravel 11, you can use the new `fluent()` helper function to easily work with multi-dimensional configuration arrays when merging them together.
Here's an example of how to merge multi-dimensional configuration arrays using the `fluent()` helper:
php
$defaultConfig = [
'database' => [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'my_app',
'username' => 'root',
'password' => '',
],
],
],
'mail' => [
'driver' => 'smtp',
'host' => 'smtp.example.com',
'port' => 587,
],
];
$overrideConfig = [
'database' => [
'connections' => [
'mysql' => [
'password' => 'secret',
],
],
],
'mail' => [
'port' => 465,
],
];
$mergedConfig = fluent($defaultConfig)
->merge(fluent($overrideConfig))
->all();
In this example:
1. We define a `$defaultConfig` array with some default configuration values for the database and mail settings.
2. We define an `$overrideConfig` array with some values that should override the defaults, such as the MySQL password and the mail port.
3. We use the `fluent()` helper to create a fluent instance of the `$defaultConfig` array.
4. We call the `merge()` method on the fluent instance, passing in a fluent instance of the `$overrideConfig` array. This will recursively merge the two arrays, with the values from `$overrideConfig` taking precedence.
5. Finally, we call the `all()` method to convert the fluent instance back to a regular array and store it in the `$mergedConfig` variable.
The resulting `$mergedConfig` array will contain the merged configuration values, with the overrides from `$overrideConfig` applied to the multi-dimensional structure of the `$defaultConfig` array[2].
This approach allows you to easily merge complex, multi-dimensional configuration arrays while preserving the nested structure of the data.
Citations:[1] https://stackoverflow.com/questions/29529414/laravel-configuration-multidimensional-array-for-different-environment
[2] https://laravel-news.com/laravel-11-2-0
[3] https://laravel.com/docs/11.x/database
[4] https://laravel.com/docs/11.x/configuration
[5] https://laravel.com/docs/11.x/helpers