php - 将两个不同数组的元素合并到第三个数组
问题描述
我希望你能帮助我......我有2个数组,我想将它们插入一个1array,new_date
如果没有data
则data
='0',如果没有data1
则data1
='0'。
对不起,如果我不知道如何解释好,我举了一个小例子。我已经尝试过 array_merge (但一切都是分开的)和 array_combine (它给出了两个参数应该有相同数量的元素的错误)。 预先感谢您提供的所有帮助...
array1 = array:5 [▼
0 => array:2 [▼
"data" => 118
"new_date" => "06-2017"
]
1 => array:2 [▼
"data" => 263
"new_date" => "07-2017"
]
2 => array:2 [▼
"data" => 264
"new_date" => "08-2017"
]
3 => array:2 [▼
"data" => 266
"new_date" => "09-2017"
]
4 => array:2 [▼
"data" => 306
"new_date" => "10-2017"
]
5 => array:2 [▼
"data" => 100
"new_date" => "11-2017"
]
array2 = array:6 [▼
0 => array:2 [▼
"data1" => 100
"new_date" => "02-2016"
]
1 => array:2 [▼
"data1" => 170
"new_date" => "06-2017"
]
2 => array:2 [▼
"data1" => 354
"new_date" => "07-2017"
]
3 => array:2 [▼
"data1" => 397
"new_date" => "08-2017"
]
4 => array:2 [▼
"data1" => 421
"new_date" => "09-2017"
]
5 => array:2 [▼
"data1" => 531
"new_date" => "10-2017"
]
示例:
array3 = array:7 [▼
0 => array:3 [▼
"data1" => 111
"data" => 0
"new_date" => "02-2016"
]
1 => array:3 [▼
"data1" => 170
"data" => 118
"new_date" => "06-2017"
]
2 => array:3 [▼
"data1" => 354
"data" => 263
"new_date" => "07-2017"
]
3 => array:3 [▼
"data1" => 397
"data" => 264
"new_date" => "08-2017"
]
4 => array:3 [▼
"data1" => 421
"data" => 266
"new_date" => "09-2017"
]
5 => array:3 [▼
"data1" => 531
"data" => 306
"new_date" => "10-2017"
]
6 => array:3 [▼
"data1" => 0
"data" => 100
"new_date" => "11-2017"
]
解决方案
用于array_combine
设置new_date
as 键。然后将第一个数组元素d1
(在您的示例中作为“data1”)添加到array_map
. 精细地,在第二个数组上循环并添加d1
存在,如果不存在,则其余所有d
(在您的示例中为“数据”)为 0。
你可以这样做:
$a1 = array(["d"=>1, "new_date"=> "06-2017"],["d"=>2, "new_date"=> "02-2016"]);
$a2 = array(["d1"=>3, "new_date"=> "06-2017"],["d1"=>4, "new_date"=> "07-2017"]);
$a1 = array_combine(array_column($a1, "new_date"), $a1);
$a2 = array_combine(array_column($a2, "new_date"), $a2);
// adding default d1 as 0
$a1 = array_map(function ($e) {return array_merge($e, ["d1" => 0]);},$a1);
foreach($a2 as $k => $v) {
if (isset($a1[$k]))
$a1[$k]["d1"] = $v["d1"]; // if new_data exist set only d1
else
$a1[$k] = array_merge($v, ["d" => 0]); //add with d as 0
}
你的结果将在$a1
推荐阅读
- extjs - ExtJS 试图将记录从一个网格添加到另一个允许重复的网格
- r - 使用 InsertUI 和 UpdateSelectizeInput
- java - Java 是缓存整个对象还是仅缓存部分对象?(可见性问题)
- json - TMSL Xmla 在现有数据库上创建表 - 表格模型脚本语言 - Azure Analysis Services
- python - 仅当变量 ==1 时才执行 Python 定义
- amazon-web-services - 如何在 AWS SAM Cloud-Formation 中使用 Route53 设置自定义域名
- php - 使用pdf js打开时加载错误的文档
- javascript - 我正在使用 getElement 但它在我的代码中不起作用,为什么?
- java - JavaFX 错误:不知道如何检测 os 系列“primarystages”
- ios - 如何从 swift 数据中获取字节