我有一些默认的配置,以及一些可以配置的特定配置。我需要将特定的配置合并到默认配置中。
value是标量,则应该应用特定的配置。value是标量数组,则应该合并数组并应用array_unique。value是一个关联数组的情况下,我们需要应用上述scalar和scalar_array规则。示例:
$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' => [
...
]
],
];预期产出:
$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' => [
...
]
],
];有一个很好的清洁的方式来实现这一点吗?
发布于 2016-03-31 07:12:29
我的情况略有不同,但可能会有所帮助。我需要替换数组上的标量和array_merge_recursive。
class ArrayUtil {
public static function mergeRecursive(array $array1, $array2) {
if($array2 && is_array($array2)) {
foreach($array2 as $key => $val2) {
if (is_array($val2) && (null!==($val1 = isset($array1[$key]) ? $array1[$key] : null)) && is_array($val1)) {
$array1[$key] = self::mergeRecursive($val1,$val2);
} else {
$array1[$key] = $val2;
}
}
}
return $array1;
}
}https://stackoverflow.com/questions/35552679
复制相似问题