php - 根据字段值合并两个数组数组
问题描述
有两个数组数组。$user 和 $experience 是两个数组,我想实现 $final 作为我的预期输出。
我有两个数组:
$user = [
[
"country" => "aus",
"new_experiences" => 0,
"new_users" => 6
],
[
"country" => "jpn",
"new_experiences" => 0,
"new_users" => 5
]
];
$experience = [
[
"country" => "jpn",
"new_experiences" => 12,
"new_users" => 0
],
[
"country" => "usa",
"new_experiences" => 10,
"new_users" => 0
]
];
根据国家/地区合并这两个数组后,我怎样才能得到:
$final = [
[
"country" => "aus",
"new_experiences" => 0,
"new_users" => 6
],
[
"country" => "jpn",
"new_experiences" => 12,
"new_users" => 5
],
[
"country" => "usa",
"new_experiences" => 10,
"new_users" => 0
]
];
解决方案
您可以使用以下简单步骤实现您的目标:
- 使用 foreach 将数组迭代并排列成单个数组
- 创建一个键值数组,就像我创建的一样
$issetArray
- 将所有值推送到 $final 数组中,您将获得所需的输出
我使用foreach
循环创建了一个简单的逻辑,isset()
并且array_push()
$user = array(
array(
"country" => "aus",
"new_experiences" => 0,
"new_users" => 6
),
array(
"country" => "jpn",
"new_experiences" => 0,
"new_users" => 5
)
);
$experience = array(
array(
"country" => "jpn",
"new_experiences" => 12,
"new_users" => 0
),
array(
"country" => "usa",
"new_experiences" => 10,
"new_users" => 0
)
);
$final = array();
$issetArray = array();
foreach($user as $key => $value)
{
if(isset($issetArray[$value['country']]))
{
$issetArray[$value['country']]['new_experiences'] = $value;
$issetArray[$value['country']]['new_users'] = $value;
}
else
{
$issetArray[$value['country']] = $value;
}
}
foreach($experience as $key => $value)
{
if(isset($issetArray[$value['country']]))
{
$issetArray[$value['country']]['new_experiences'] = $value['new_experiences'];
$issetArray[$value['country']]['new_users'] = $value['new_users'];
}
else
{
$issetArray[$value['country']] = $value;
}
}
foreach($issetArray as $value)
{
array_push($final, $value);
}
echo "<pre>";
print_r($final);
点击链接了解更多关于isset()
和array_push()
推荐阅读
- angular - 离子列表分隔符
- xslt - 数组的xslt concat值
- javascript - 表单上的按钮控件来操作 Web Browser 控件网页
- android - 在 aosp 构建中找不到资源错误
- c# - 我的 SQL Server 数据库 asp.net 核心中的数据库初始化程序始终为空数据
- vbscript - 如何在 .net core 或 .net 标准项目中运行 VBScript?
- php - 在代码点火器的 foreach 循环中从表单批量插入
- r - 用闪亮的R在R中创建交互式传单地图
- gcov - GCOV:执行多次测试时未生成 GCDA 文件
- r - 多项式和交互项的岭回归与 glmnet