Tôi có một số cấu hình mặc định và một số cấu hình cụ thể có thể định cấu hình được. Tôi cần phải hợp nhất các cấu hình cụ thể vào các cấu hình mặc định.PHP array_replace_recursive nếu vô hướng, array_merge_recursive nếu mảng
- Trong trường hợp tùy chọn cấu hình cụ thể không tồn tại, tùy chọn mặc định sẽ được sử dụng.
- Trong trường hợp đó,
value
là một đại lượng vô hướng, cấu hình cụ thể nên được áp dụng - Trong trường hợp đó,
value
là một mảng vô hướng, các mảng cần được sáp nhập và array_unique áp dụng. - Trong trường hợp
value
là mảng kết hợp, Chúng tôi cần áp dụng các quy tắc nêu trênscalar
vàscalar_array
.
Ví dụ:
$defaultConfigs = [
'scalar1' => 1,
'scalar2' => "Apple",
'array_scalar' => [3,4,5],
'array_associative' => [
'scalar' => 1,
'array_scalar' => [1,2,3],
'array_associative' => [
...
]
],
];
$specificConfigs = [
'scalar1' => "A",
'array_scalar' => [3,4,5],
'array_associative' => [
'scalar' => 1,
'array_scalar' => [1,2,3],
'array_associative' => [
...
]
],
];
Dự kiến Output:
$expectedConfigs = [
'scalar1' => "A", // Overridden
'scalar2' => "Apple", // Default used
'array_scalar' => [1,2,3,4,5], // Scalar merged and array_unique
'array_associative' => [
'scalar' => "B", // Overridden
'array_scalar' => [1,2,3,4,5], // Scalar merged and array_unique
'array_associative' => [
...
]
],
];
Có cách nào sạch đẹp đạt được điều này?
Điều này thật thú vị, nếu tôi hiểu, bạn đang thử một cái gì đó giống như tệp cấu hình SublimeText (chỉ để làm cho nó rõ ràng)? – Asur
Tôi nghĩ rằng bạn đã hiểu chính xác – Gravy
Tôi sẽ sử dụng chức năng đệ quy tùy chỉnh, vì bạn có thể cần nhiều tính năng hơn các hàm đệ quy php có thể có. Nhưng dù sao tôi cá nhân tìm thấy nó hoàn toàn ok. – Asur