本文介绍如何将第三方 api 返回的扁平化 faq 数据(每个问答分属独立数组项)按逻辑配对,合并为结构清晰的键值对或对象数组,适用于 wordpress 自定义字段等场景。
在处理来自不可控第三方 API 的 FAQ 数据时,常见模式是:
同一组问答(如 faq_list_0_question 和 faq_list_0_answer)被拆分为两个独立数组元素,仅通过 meta_key 的命名规则隐含关联关系。此时,我们需要基于 meta_key 的语义结构(如下划线分隔的序号与类型)进行智能分组与合并。
核心思路是:提取每条记录中标识“组别”和“类型”的关键信息,以组别为键、类型为子键,动态构建嵌套结构。以下是两种常用且实用的实现方式:
适用于需保留 id、post_id 等元信息的场景:
$new_data = [];
foreach ($array['data'] as $item) {
// 拆分 meta_key,例如 "faq_list_0_question" → ['faq', 'list', '0', 'question']
$parts = explode('_', $item['meta_key']);
// 最后一部分是类型(question/answer),倒数第二部分通常是序号(如 '0')
$type = array_pop($parts);
$index = array_pop($parts); // 获取序号,如 '0'
// 重构组键,如 "faq_list_0"
$groupKey = implode('_', $parts) . '_' . $index;
// 初始化组(若不存在),并存入对应类型的数据
if (!isset($new_data[$groupKey])) {
$new_data[$groupKey] = [];
}
$new_data[$groupKey][$type] = $item;
}
// 输出示例(关联数组):
// [
// "faq_list_0" => [
// "question" => [...],
// "answer" => [...]
// ]
// ]更贴近实际业务需求——输出简洁的 FAQ 列表,每项含 id、question、answer 字段:
$new_data = [];
foreach ($array['data'] as $item) {
$parts = explode('_', $item['meta_key']);
$type = array_pop($parts); // 'question' or 'answer'
$index = array_pop($parts); // 如 '0', '1', '2'
// 确保该序号对应的 FAQ 条目已初始化
if (!isset($new_data[$index])) {
$new_data[$index] = [
'id' => $index,
'question' => '',
'answer' => ''
];
}
// 根据 type 填充内容(只取 meta_value,更符合展示需求)
if ($type === 'question') {
$new_data[$index]['question'] = $item['meta_value'];
} elseif ($type === 'answer') {
$new_data[$index]['answer'] = $item['meta_value'];
}
}
// 转为数值索引数组,确保顺序一致
$faqs = array_values($new_data);
// 输出示例(JSON 可用格式):
// [
// {
// "id": "0",
// "question": "Lorem ipsum...",
// "answer": "In at neque..."
// }
// ]通过以上方法,你无需修改上游 API,即可将松散的元数据高效转化为语义明确、易于消费的 FAQ 结构,显著提升前后端协作效率与代码可维护性。
# php
# word
# js
# 前端
# json
# wordpress
# 后端
# 键值对
# if
# count
# continue
# 数据结构
# 对象
相关文章:
香港服务器网站推广:SEO优化与外贸独立站搭建策略
东莞专业制作网站的公司,东莞大学生网的网址是什么?
建站之星导航如何优化提升用户体验?
如何用wdcp快速搭建高效网站?
如何在建站宝盒中设置产品搜索功能?
已有域名和空间如何搭建网站?
微课制作网站有哪些,微课网怎么进?
如何选购建站域名与空间?自助平台全解析
,购物网站怎么盈利呢?
再谈Python中的字符串与字符编码(推荐)
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
广州营销型建站服务商推荐:技术优势与SEO优化解析
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
香港服务器WordPress建站指南:SEO优化与高效部署策略
用v-html解决Vue.js渲染中html标签不被解析的问题
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
官网网站制作腾讯审核要多久,联想路由器newifi官网
建站之星安装后如何配置SEO及设计样式?
如何零基础开发自助建站系统?完整教程解析
桂林网站制作公司有哪些,桂林马拉松怎么报名?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
建站之星在线版空间:自助建站+智能模板一键生成方案
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
如何在企业微信快速生成手机电脑官网?
建站主机选购指南与交易推荐:核心配置解析
高性能网站服务器配置指南:安全稳定与高效建站核心方案
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站主机选虚拟主机还是云服务器更好?
如何在万网开始建站?分步指南解析
建站主机选哪种环境更利于SEO优化?
小程序网站制作需要准备什么资料,如何制作小程序?
网站制作难吗安全吗,做一个网站需要多久时间?
如何选择CMS系统实现快速建站与SEO优化?
微信小程序 五星评分(包括半颗星评分)实例代码
网站制作的步骤包括,正确网址格式怎么写?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
济南企业网站制作公司,济南社保单位网上缴费步骤?
网页设计网站制作软件,microsoft office哪个可以创建网页?
高端云建站费用究竟需要多少预算?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
如何快速上传自定义模板至建站之星?
如何通过PHP快速构建高效问答网站功能?
javascript中的try catch异常捕获机制用法分析
如何通过.red域名打造高辨识度品牌网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何规划企业建站流程的关键步骤?
如何撰写建站申请书?关键要点有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。