php - PHP - 分组排序数组
问题描述
我无法以不同的方式对数组结果进行排序。我编写了一个返回指定结果但方式不正确的 API 调用。
所以它给了我:
{
"success": true,
"data": [
[
"Question",
[
"Answer"
]
],
[
"Question",
[
"Answer 2"
]
],
[
"Question 2",
[
"Answer 3"
]
]
],
"message": null
}
我想为该问题返回一组答案,例如:
{
"success": true,
"data": [
[
"Question",
[
"Answer"
],
[
"Answer 2"
]
],
[
"Question 2",
[
"Answer 3"
]
]
],
"message": null
}
我的代码看起来像:
$questions = $this->getQRepository()->findAll();
$mappedQuestions = [];
foreach ($questions as $question){
$title = $question->getTitle();
$mappedQuestions[] = [
$title,
[
$question->getAnswer()
]
];
}
return $mappedQuestions;
它给了我结果,它按 id 将每个问题与答案分组,但我需要按问题对所有答案分组。结果正确返回,但排序错误。
解决方案
这可能有效,但我不确定这是否是您正在寻找的。所以首先,像这样修改你当前的循环和$mappedQuestions
数组结构:
$mappedQuestions = [];
foreach ($questions as $question){
$mappedQuestions[] = array(
'title' => $question->getTitle(),
'answer' => $question->getAnswer()
);
}
之后,再次迭代数组以创建一个新数组,该数组将根据数组键将元素组合在一起,在本例中为“标题”。
$sorted = array();
foreach ($mappedQuestions as $element) {
$sorted[$element['title']][] = $element['answer'];
}
return $sorted;
的最终输出$sorted
是:
{
"Question":[
"Answer",
"Answer 2"
],
"Question 2":[
"Answer 3"
]
排序循环代码实际上来自这个问题。
我希望这会有所帮助。
推荐阅读
- django - Django:当令牌存储在 HttpOnly cookie 中时,如何更新 SimpleJWT 访问令牌?
- neo4j - Neo4j Cypher 从同一节点查询多个关系
- python - 如何保存上面标题的无花果?
- python - 如何用python中的特定值替换列的值?
- git - 如何检查确切的 Windows git 凭据管理器有效?
- python - 合并数据框并获得额外的行。(蟒蛇/熊猫)
- linux-kernel - 将 Linux DMA 分配限制在特定范围内
- javascript - 子菜单级别无法正常工作 Vanilla JS
- docker - 为什么 docker-compose 运行相同的命令并使用错误的 Dockerfile?
- ios - 活动视图控制器未显示整个弹出窗口