php - 按键组合两个数组
问题描述
我有两个数组:
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value] => 60.00000
)
[15473] => Array
(
[id] => 15473
[group] => 9109
[value] => -15.000000
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value] => -20.000000
)
)
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value_prev] => 100.000000
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value_prev] => -100.000000
)
)
我试图通过键组合这些数组,如果匹配则添加新元素(value_prev),如果不存在则添加 0,所以我需要这些数组:
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value] => 60.00000
[value_prev] => 100.000000
)
[15473] => Array
(
[id] => 15473
[group] => 9109
[value] => -15.000000
[value_prev] => 0
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value] => -20.000000
[value_prev] => -100.000000
)
)
我尝试使用 array_keys 函数但无法获得所需的数组。我找到了一些解决方案,但没有帮助我,因为数组的结构不一样。
解决方案
由于数组是关联的,因此这是一项非常简单的任务。
循环数组 1 并查看数组 2 中是否存在键,如果确实复制值,则添加 0 值。
$keys = array_keys($arr2);
foreach($arr1 as $key => &$sub){
if(in_array($key, $keys)){
$sub["value_prev"] = $arr2[$key]["value_prev"];
}else{
$sub["value_prev"] = 0;
}
}
推荐阅读
- identityserver4 - 在 identityserver4 中向用户显示验证错误
- swift - 获取所选行的索引以用于准备 segue
- c++ - 关于 C++ 中的默认参数
- html - CSS Style 类在 Thymeleaf html 中不起作用?
- node.js - 如何将 Alexa(echo plus) 连接到 VPN?
- ffmpeg - 如何制作在第一段中间开始播放的 MPEG-DASH MPD?
- reactjs - undefined 不是函数(评估 'RNViewShot.captureRef(view,options)')
- jmeter - 如何从邮递员集合创建 JSON 文件
- c# - C# 语法和切换通配符
- regex - 根据模式删除txt文件中的行