php - PHP - 将多维数组值添加到特定键的有效方法
问题描述
我有一个多维数组,其中包含一些基于用户选择从搜索中“查找”或“排除”的过滤器的 ID。每组过滤器都按一个键分组(在下面的示例中为 65):
$cache_data = ['filters' => [
65 => [
'find' => [
167
],
'exclude' => [
169,
171
]
]
]
];
我想在find
数组中添加更多 ID,同时保留已经存在的 ID:在这种情况下为 167。数组中的值exclude
需要保持不变。假设我想将以下 4 个值添加到find
:
$to_be_added = [241, 242, 285, 286];
我需要根据过滤器的组 ID(在本例中为 65)定位过滤器,并使用以下方法合并我的新值array_merge()
:
$existing_filters = ($cache_data['filters'][65]);
$merged = array_merge($existing_filters['find'], $to_be_added);
$cache_data['filters'][65]
然后我使用$merged
with键重写find
,并将已经存在的值保留在exclude
:
$cache_data['filters'][65] = [
'find' => $merged,
'exclude' => $existing_filters['exclude']
];
这个输出,print_r($cache_data['filters'][65]);
正是我想要的:
Array
(
[find] => Array
(
[0] => 167
[1] => 241
[2] => 242
[3] => 285
[4] => 286
)
[exclude] => Array
(
[0] => 169
[1] => 171
)
)
但是我想知道是否有更简单或更有效的方法来实现相同的目标?
使用 PHP 7.2.10
解决方案
单线:
$cache_data['filters'][65]['find'] = array_merge(
$cache_data['filters'][65]['find'],
$to_be_added
);
使用
$cache_data['filters'][65]['find'] += $to_be_added;
不安全,因为在这种情况下, key 下的 key 值将241
被0
忽略,因为$cache_data['filters'][65]['find']
key 已经有0
value 167
。
推荐阅读
- python - 熊猫在将值设置为数据框时更改日期时间
- kubernetes - Janusgraph 部署在 kuberntes 上,存储为 Cassandra 给出错误:无法实例化配置的图
- linux - ';'的计数 在列
- oracle - Oracle 将结果集放入 FORALL 中的变量中
- c# - 没有详细信息的 Elasticsearch serilog 错误
- flutter-web - 使用 Flutter 在 Web 浏览器中获取位置?
- python - 校正时间序列中的时钟漂移
- r - ggplot2 中 facet_wrap() 的手动中断
- kubernetes - 是否有一个 GUI 可以像“kubectl cp”一样上传文件?
- vb.net - 我如何制作组合框以列出所有带有我在 vb 中键入的文本的值