PHP-php数组分组有哪些良好的思路

发布于 2016-11-15 07:55:19 字数 849 浏览 1181 评论 2

<?php
$arr = array(
0=>array(
"question"=>"问题1",
"answer"=>"A"
),
1=>array(
"question"=>"问题2",
"answer"=>"AA"
),
2=>array(
"question"=>"问题1",
"answer"=>"B"
),
3=>array(
"question"=>"问题1",
"answer"=>"C"
),
4=>array(
"question"=>"问题2",
"answer"=>"BB"
),
5=>array(
"question"=>"问题1",
"answer"=>"D"
),
6=>array(
"question"=>"问题2",
"answer"=>"CC"
),
7=>array(
"question"=>"问题2",
"answer"=>"DD"
)
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-10-12 20:31:38

这种问题的关键是多个answer要归属于一个question,而一个question有要归属于一个新的index

那么我们首先可以通过建立新的结构

$result[0] = array('question'=>question,'answer'=>'');

这样我们就把question归属到一个新的index上了

怎么把answer归属于一个question呢,我们只知道question而不知道$result的index,但是我们建立上面的结构时知道question和index有一个映射关系,我们就把这个映射关系记录下来

$indexs[question] = 0;

那么我们就可以通过indexs的映射关系知道$result的index的索引,answer就可以通过找相应的question找出相应的存放位置

$result[$indexs[question]]['answer'][] = answer

<?php
$arr = array(
0=>array(
"question"=>"问题1",
"answer"=>"A"
),
1=>array(
"question"=>"问题2",
"answer"=>"AA"
),
2=>array(
"question"=>"问题1",
"answer"=>"B"
),
3=>array(
"question"=>"问题1",
"answer"=>"C"
),
4=>array(
"question"=>"问题2",
"answer"=>"BB"
),
5=>array(
"question"=>"问题1",
"answer"=>"D"
),
6=>array(
"question"=>"问题2",
"answer"=>"CC"
),
7=>array(
"question"=>"问题2",
"answer"=>"DD"
)
);

$indexs = array();
$result = array();
foreach($arr as $v) {
$key = $v['question'];
if(!isset($indexs[$key])) {
$index = count($result);
$result[$index] = array('question'=>$v['question'],'answer'=>array());

$indexs[$key] = $index;
}
$result[$indexs[$key]]['answer'][] = $v['answer'];
}

var_dump($result);

归属感 2017-04-24 21:49:19

确定你要分组的依据就好,就相当于sql里的group by .
譬如这里,你是以question来分组的,所以,每个question里面的值是标识(即使是中文又怎么样)。

  $format_result = array();
foreach ($arr as $key => $value )
{
if( !isset($format_result[$value['question']]) )
{
$format_result[$value['question']] = array( 'question' => $value['question'], 'answer' => array());
}

$format_result[$value['question']]['answer'][] = $value['answer'];
}
$format_result = array_values($format_result);
var_export($format_result);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文