php - 如何合并两个不同的数组PHP
问题描述
我需要结合两个不同的领域。在第一个字段中,我生成一个月中的几天。我想列出一个月中的所有日子。我想为它们添加第二个字段,其中每天都有项目。但是,例如,周末或其他日子没有项目。IE。第二个字段总是有更少的项目。第二个字段是从 DB 收紧的。对于第一个字段,我需要像在 MySQL 中一样进行 JOIN。
我突然想到,在 MySQL 中可以创建一个带有给定月份的临时表并将其链接到此处,但我认为它不正确。
$arrayDate = [0 => '20210401',1 => '20210402',2 => '20210403',3 => '20210404',4 => '20210405',5 => '20210406',6 => '20210407',7 => '20210408',8 => '20210409',9 => '20210410',10 => '20210411',11 => '20210412',12 => '20210413',13 => '20210414',14 => '20210415',15 => '20210416',16 => '20210417',17 => '20210418',18 => '20210419',19 => '20210420',20 => '20210421',21 => '20210422',22 => '20210423',23 => '20210424',24 => '20210425',25 => '20210426',26 => '20210427',27 => '20210428',28 => '20210429',29 => '20210430'];
$arrayItem[35] = ['id' => 35, 'date' => '20210401', 'item' => 'aaaa'];
$arrayItem[36] = ['id' => 36, 'date' => '20210402', 'item' => 'bbbb'];
$arrayItem[37] = ['id' => 36, 'date' => '20210430', 'item' => 'cccc'];
// i need output
20210401 - aaaa
20210402 - bbbb
20210403 - empty
20210404 - empty
...
20210430 - cccc
编辑:我使用嵌套循环,但我仍然无法获得正确的输出
foreach ($arrayDate as $date) {
foreach ($arrayItem as $item) {
if ($date == $item['date']) {
bdump($item['date']);
} else {
bdump($date);
}
}
}
bdump($item['date']) = '20210401', '20210402', '20210430'
bdump($date) = '20210401', '20210401', '20210402', '20210402', '20210403', '20210403', '20210403', '20210404', '20210404', '20210404', '20210405', '20210405', '20210405' ....
解决方案
使用array_column您可以从 $arrayItem 创建一个以日期为键的数组。$dateItem 是一个类似的数组
array (
20210401 => "aaaa",
20210402 => "bbbb",
20210430 => "cccc",
)
您可以使用简单的 foreach 完成的输出。
$dateItem = array_column($arrayItem,'item','date');
foreach($arrayDate as $date){
echo $date.' '.($dateItem[$date] ?? 'empty')."<br>\n";
}
笔记:
和
array_column($arrayItem,null,'date')
你得到一个二维数组,其中日期作为可以使用的键。
array (
20210401 =>
array (
'id' => 35,
'date' => "20210401",
'item' => "aaaa",
),
20210402 =>
array (
'id' => 36,
'date' => "20210402",
'item' => "bbbb",
),
20210430 =>
array (
'id' => 36,
'date' => "20210430",
'item' => "cccc",
),
)
推荐阅读
- jenkins - Kubernetes 中的主动-被动 Jenkins 设置
- odoo - 使用 angular5-odoo-jsonrpc 的离子和 odoo
- reactjs - React:如何更改地图内切换开关的状态?
- c# - 如何使用 ASP MVC 在另一个文本框上设置总和值
- javascript - 网络蓝牙无法检测到我的手机(Galaxy Note 9)
- magento - Magento 1.9 带有独立购物车的多商店
- oracle-apex - 在交互式报告中,固定为“区域”的“标题”不适用于控制中断
- python - Python 文件删除 PermissionError: [WinError 32]
- android - 如何在自定义视图/组件中双向绑定 Seekbar?
- asp.net-mvc - ASP.net MVC 页面 - 显示进行中并在后台运行一些任务