使用array_merge_recursive合并2个数组不能正常工作

时间:2013-02-12 11:12:35

标签: php arrays multidimensional-array

我的数据库有2列。该人的ID在1列中重复5次,并且每个人在另一列中与问题答案配对 像这样:

ID  Answer
1   A1
1   A4
1   A2
1   A9
1   A3
12  A1
12  A11
12  A12
12  A17
12  A2

我想要尝试做的是将所有答案合并为1个数组及其ID

之类的东西
array (
        [1] => array ( 0 => 'A1', 1 => 'A4', 2 => 'A2', 3 => 'A9', 4 => 'A3'),
        [12] => array ( 0 => 'A1', 1 => 'A11', 2 => 'A12', 3 => 'A17', 4 => 'A2')
        )

我的代码如下:

foreach ($quiz_answers as $aq => $aa)
            {
                $array_loop = array(  $aa['response_id'] => array( $aa['answer'] ) );
                $ss = array_merge_recursive($array_loop, $array_loop);

            }

我的问题是,循环不会以所需的方式合并,我只得到2个输出。我不是很擅长操纵数组,可能我需要另一个功能,但我不太确定我缺少什么。我尝试在array_merge_recursive($anotherVariable, $array_loop);中使用另一个变量,但这也不起作用。

4 个答案:

答案 0 :(得分:2)

只需更改foreach循环即可根据需要构建生成的数组。

foreach ($quiz_answers as $aa) {
    $ss[$aa['response_id']][] = $aa['answer'];
}

根据需要提供$ss数组:

array(
    1  => array('A1', 'A4', 'A2', 'A9', 'A3'),
    12 => array('A1', 'A11', 'A12', 'A17', 'A2'),
)

答案 1 :(得分:0)

你需要做的是拥有一个包含用户id的数组,每个数组都是一个包含一系列答案的关联数组。

array (
        [1] => array ( 0 => 'A1', 0 => 'A4', 0 => 'A2', 0 => 'A9', 0 => 'A3'),
        [12] => array ( 0 => 'A1', 0 => 'A11', 0 => 'A12', 0 => 'A17', 0 => 'A2')
        )

所以这样的东西会起作用(下面的骨架代码)

$answers = array();
foreach( $quiz_answers as $id => $ans ) {
  // check if $answers[$id] exists, otherwise create it here....
  if(exists(....)) ...
  else $answers[$id] = array();

  // Then add the current answer to it, as below
  array_push($answers[$id], $ans );
}

答案 2 :(得分:0)

echo "<pre />";
for($i=0;$i<count($array);$i++)
{
    $output[$array[$i]['ID']][]=$array[$i]['Answer'];
}
print_r($output);

答案 3 :(得分:0)

$quiz_answers = // get all the data from database.
$res          = array();
foreach($quiz_answers as $key=>$val){
     $res[$val['response_id']][]    = $val['answer'];
}

print_r($res);