PHP不使用array_merge向数组追加不同键值对的实现方法
实现代码
不需要调用array_merge这类数组函数,直接使用PHP原生的数组展开语法(语言级特性,无函数调用开销)即可实现完全一致的效果,代码如下:
$options = ['height' => 10, 'width' => 20, 'fit' => 'crop']; return new Settings( [ 'detail' => [...$options, 'foo' => 'bar'], 'detail-l' => [...$options, 'foo2' => 'bar2'] ], [ 'small' => [...$options, 'foo3' => 'bar3'] ] );
实现说明
- 数组展开
...是PHP 7.4及以上版本支持的原生语法,不属于函数调用,完全满足不调用数组函数的要求 - 合并逻辑和原
array_merge完全对齐:基础配置项在前,自定义键值对在后,重名键时后面的自定义值会覆盖基础值,行为和原有代码无差异 - 最终传入Settings构造方法的两个参数结构和预期结果完全一致。
内容的提问来源于stack exchange,提问作者Miklo Vuba
相关产品推荐
相关产品推荐

