Ho alcune configurazioni predefinite e alcune configurazioni specifiche che potrebbero essere configurate. Ho bisogno di unire le configurazioni specifiche nelle configurazioni predefinite.PHP array_replace_recursive se scalare, array_merge_recursive se array
- Nel caso in cui l'opzione di configurazione specifica non esiste, verrà utilizzata l'opzione predefinita .
- Nel caso in cui il
value
è uno scalare, la configurazione specifica deve essere applicato - Nel caso in cui il
value
è una matrice scalari, gli array dovrebbero essere unificati e array_unique applicati. - Nel caso in cui lo
value
sia un array associativo, è necessario applicare le precedenti regolescalar
escalar_array
.
Esempio:
$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' => [
...
]
],
];
Output previsto:
$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'è un bel modo pulito per ottenere questo risultato?
Questo è interessante, se ho capito, stai provando qualcosa come i file di configurazione di SublimeText (solo per renderlo chiaro)? – Asur
Penso che tu l'abbia capito esattamente – Gravy
Vorrei andare con una funzione ricorsiva personalizzata, perché potresti avere bisogno di più funzioni di quante possano avere le funzioni ricorsive di PHP. Ma comunque personalmente lo trovo completamente ok. – Asur