繁体   English   中英

PHP在没有array_merge的情况下向数组添加不同的键值

[英]PHP add different key value to array without array_merge

我有一个带有一些固定值的设置数组,但我需要能够添加一个额外的键值,即变量

$settings = ['height' => 10, 'width' => 20, 'fit' => 'crop'];

return new Settings(
    ['detail' => array_merge($options, ['foo' => 'bar']), 'detail-l' => array_merge($options, ['foo2' => 'bar2'])],
    ['small' => array_merge($options, ['foo3' => 'bar2'])],
);

但我认为这不是最好的方法,我最好不要使用数组函数

我的预期结果将是 2 个看起来像这样的数组

[
    'detail' => ['height' => 10, 'width' => 20, 'fit' => 'crop', 'foo' => 'bar'],
    'detail-l' => ['height' => 10, 'width' => 20, 'fit' => 'crop', 'foo2' => 'bar2']
]

[
    'small' => ['height' => 10, 'width' => 20, 'fit' => 'crop', 'foo3' => 'bar3']
]

使用splat运算符:

$settings = ['height' => 10, 'width' => 20, 'fit' => 'crop'];

return new Settings(
    ['detail' => ['foo' => 'bar', ...$settings], 'detail-l' => ['foo2' => 'bar2', ...$settings]],
    ['small' => ['foo3' => 'bar2', ...$settings]],
);

虽然我仍然相信array_merge会用很少的开销做你想做的事,但这里有一个你可以使用的函数。

function pushToArray(array $data, string $key, $value)
{
    $data[$key] = $value;
    return $data;
}

它复制数组,添加键/值组合并返回副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM