php - 将两个关联数组转换为一个多维数组 PHP
问题描述
我有 2 个关联数组,由以下 JSON 格式的 2 个查询产生:
{
"competence": [
{
"id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "11",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "26",
"title": "blabla",
"description": "blabla",
"image": "blabla"
}
],
"schedule": [
{
"id": "34",
"parent_id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "33",
"parent_id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "32",
"parent_id": "11",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "31",
"parent_id": "26",
"title": "blabla",
"description": "blabla",
"image": "blabla"
}
]
}
上面这段代码生成的这两个数组:
<?php
$queryCompetence = mysqli_query($con, "SELECT `id`, `title`, `description`, `image` FROM `competence` ORDER BY `title` ASC");
$querySchedule = mysqli_query($con, "SELECT `id`, `id_competence`, `title`, `description`, `image` FROM `schedule` ORDER BY `created_date` DESC");
$competence = array();
$schedule = array();
while ($row = mysqli_fetch_assoc($queryCompetence)) {
$competence[] = array(
'id' => $row['id'],
'title' => $row['title'],
'description' => $row['description'],
'image' => $row['image'],
);
}
while ($row = mysqli_fetch_assoc($querySchedule)) {
$schedule[] = array(
'id' => $row['id'],
'parent_id' => $row['id_competence'],
'title' => $row['title'],
'description' => $row['description'],
'image' => $row['image'],
);
}
$response['competence'] = $competence;
$response['schedule'] = $schedule;
echo json_encode($response);
die();
?>
我需要在 php 中创建一个多维数组,它将输出下面的 JSON:
{
"competence": [
{
"id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla",
"schedule": [
{
"id": "34",
"parent_id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "33",
"parent_id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
}
]
},
{
"id": "11",
"title": "blabla",
"description": "blabla",
"image": "blabla",
"schedule": [
{
"id": "32",
"parent_id": "11",
"title": "blabla",
"description": "blabla",
"image": "blabla"
},
{
"id": "33",
"parent_id": "21",
"title": "blabla",
"description": "blabla",
"image": "blabla"
}
]
},
{
"id": "26",
"title": "blabla",
"description": "blabla",
"image": "blabla",
"schedule": [
{
"id": "31",
"parent_id": "26",
"title": "blabla",
"description": "blabla",
"image": "blabla"
}
]
}
]
}
我如何实现这一目标?我一直在网上搜索,但似乎没有运气。任何帮助都感激不尽。
谢谢你。
解决方案
您只需要遍历$schedule
数组,将其值插入到$competence
与inid
值$competence
匹配的位置:parent_id
$schedule
foreach ($schedule as $s) {
// find the parent_id in $competence
if (($key = array_search($s['parent_id'], array_column($competence, 'id'))) !== false) {
$competence[$key]['schedule'][] = $s;
}
}
$response = array('competence' => $competence);
推荐阅读
- bash - 在 kubernetes pod 中执行命令(bash 脚本)
- protractor - 量角器 - 无法获得 h2 值
- accessibility - 可访问性:jaws18 - 在用户名输入字段中输入的每个字母都会在 chrome 中读取两次
- python-3.x - 如何解决 Selenium Python newSession 错误?
- javascript - 就在 Latex 表达式是 typset 之前的 MathJax 事件
- python - 如何检查日期时间在熊猫的两个日期时间之间的位置
- ckeditor - CKeditor Image2 插件不显示高级选项卡?
- apache-poi - Domino 10 升级和 XPages POI 库错误
- ruby - 如何在Rspec中找到每个测试用例所花费的时间
- sylius - 在 sylius 中创建新主题后图标未加载