我dump了一个数组:
array(4) {
  [0] => array(6) {
    ["que_content"] => string(12) "这是谁?"
    ["que_id"] => string(1) "1"
    ["ops_qid"] => string(1) "1"
    ["ops_contentoid"] => string(1) "A"
    ["ops_content"] => string(18) "啊啊啊啊啊啊"
    ["ops_count"] => string(1) "0"
  }
  [1] => array(6) {
    ["que_content"] => string(12) "这是谁?"
    ["que_id"] => string(1) "1"
    ["ops_qid"] => string(1) "1"
    ["ops_contentoid"] => string(1) "B"
    ["ops_content"] => string(15) "爸爸八佰伴"
    ["ops_count"] => string(1) "0"
  }
  [2] => array(6) {
    ["que_content"] => string(12) "是我啊?"
    ["que_id"] => string(1) "2"
    ["ops_qid"] => string(1) "2"
    ["ops_contentoid"] => string(1) "C"
    ["ops_content"] => string(30) "踩踩踩从踩踩踩踩踩踩"
    ["ops_count"] => string(1) "0"
  }
  [3] => array(6) {
    ["que_content"] => string(12) "是我啊?"
    ["que_id"] => string(1) "2"
    ["ops_qid"] => string(1) "2"
    ["ops_contentoid"] => string(1) "D"
    ["ops_content"] => string(24) "顶顶顶顶顶顶顶顶"
    ["ops_count"] => string(1) "0"
  }
}现在我想把这个数组改成这样的,我想用一个function直接更改应该如何做?array(2) {
  [0] => array(2) {
    ["que_content"] => string(12) "这是谁?"
    ["que_id"] => string(1) "1"
    ["opt"]=>array(2){
 [0]=>array(3){   
    ["ops_contentoid"] => string(1) "A"
    ["ops_content"] => string(18) "啊啊啊啊啊啊"
    ["ops_count"] => string(1) "0"
}
         [1]=>array(3){   
    ["ops_contentoid"] => string(1) "B"
    ["ops_content"] => string(15) "爸爸八佰伴"
    ["ops_count"] => string(1) "0"
}
    }
  }
  [1] => array(2) {
    ["que_content"] => string(12) "是我啊?"
    ["que_id"] => string(1) "2"
    ["opt"]=>array(2){
 [0]=>array(3){
    ["ops_contentoid"] => string(1) "C"
    ["ops_content"] => string(30) "踩踩踩从踩踩踩踩踩踩"
    ["ops_count"] => string(1) "0"
 }     
 [1]=>array(3){  
            ["ops_contentoid"] => string(1) "D"
    ["ops_content"] => string(24) "顶顶顶顶顶顶顶顶"
    ["ops_count"] => string(1) "0"
 }
    }
  }
}下面是原数组:Array ( [0] => Array ( [que_content] => 这是谁? [que_id] => 1 [ops_qid] => 1 [ops_contentoid] => A [ops_content] => 啊啊啊啊啊啊 [ops_count] => 0 ) [1] => Array ( [que_content] => 这是谁? [que_id] => 1 [ops_qid] => 1 [ops_contentoid] => B [ops_content] => 爸爸八佰伴 [ops_count] => 0 ) [2] => Array ( [que_content] => 是我啊? [que_id] => 2 [ops_qid] => 2 [ops_contentoid] => C [ops_content] => 踩踩踩从踩踩踩踩踩踩 [ops_count] => 0 ) [3] => Array ( [que_content] => 是我啊? [que_id] => 2 [ops_qid] => 2 [ops_contentoid] => D [ops_content] => 顶顶顶顶顶顶顶顶 [ops_count] => 0 ) ) php数组

解决方案 »

  1.   

    $arr=Array ( 
    '0' => Array ( 
       'que_content' => '这是谁?' ,
       'que_id' => 1, 
     
       'ops_qid' => 1, 
       'ops_contentoid' => 'A', 
       'ops_content' => '啊啊啊啊啊啊' ,
       'ops_count' => 0 
    ) ,
    '1' => Array ( 
    'que_content' => '这是谁?', 
     
    'que_id' => 1 ,
    'ops_qid' => 1 ,
    'ops_contentoid' => 'B', 
    'ops_content' => '爸爸八佰伴', 
    'ops_count' => 0
     ) ,
     '2' => Array ( 
     'que_content' => '是我啊?',
     'que_id' => 2 ,
     'ops_qid' => 2 ,
     'ops_contentoid' => 'C', 
     
    'ops_content' => '踩踩踩从踩踩踩踩踩踩 ',
    'ops_count' => 0 
    ) ,
    '3' => Array ( 
     'que_content' => '是我啊?',
     'que_id' => 2 ,
     'ops_qid' => 2 ,
     
    'ops_contentoid' => 'D', 
    'ops_content' => '顶顶顶顶顶顶顶顶 ',
     
    'ops_count' => 0,
     ) 
     );
     $t=array();
     foreach($arr as $v){
         if(!$t[$v['que_id']]){
        $t[$v['que_id']]=array('que_content'=>$v['que_content'],'que_id'=>$v['que_id'],'opt'=>array(array_slice($v,3)));
     } else{
          $t[$v['que_id']]['opt'][]=array_slice($v,3);
     }
     }
     print_r(array_values($t));
      

  2.   

    $ar = array (
      0 => 
      array (
        'que_content' => '这是谁?',
        'que_id' => '1',
        'ops_qid' => '1',
        'ops_contentoid' => 'A',
        'ops_content' => '啊啊啊啊啊啊',
        'ops_count' => '0',
      ),
      1 => 
      array (
        'que_content' => '这是谁?',
        'que_id' => '1',
        'ops_qid' => '1',
        'ops_contentoid' => 'B',
        'ops_content' => '爸爸八佰伴',
        'ops_count' => '0',
      ),
      2 => 
      array (
        'que_content' => '是我啊?',
        'que_id' => '2',
        'ops_qid' => '2',
        'ops_contentoid' => 'C',
        'ops_content' => '踩踩踩从踩踩踩踩踩踩',
        'ops_count' => '0',
      ),
      3 => 
      array (
        'que_content' => '是我啊?',
        'que_id' => '2',
        'ops_qid' => '2',
        'ops_contentoid' => 'D',
        'ops_content' => '顶顶顶顶顶顶顶顶',
        'ops_count' => '0',
      ),
    );
    $d = array(
        'que_content' => '',
        'que_id' => '',
        'ops_qid' => '',
    );
    $res = array();
    foreach($ar as $item) {
      if(! isset($res[$item['que_id']])) $res[$item['que_id']] = array_intersect_key($item, $d);
      $res[$item['que_id']][] = array_diff_key($item, $d);
    }
    print_r(array_values($res));Array
    (
        [0] => Array
            (
                [que_content] => 这是谁?
                [que_id] => 1
                [ops_qid] => 1
                [0] => Array
                    (
                        [ops_contentoid] => A
                        [ops_content] => 啊啊啊啊啊啊
                        [ops_count] => 0
                    )            [1] => Array
                    (
                        [ops_contentoid] => B
                        [ops_content] => 爸爸八佰伴
                        [ops_count] => 0
                    )        )    [1] => Array
            (
                [que_content] => 是我啊?
                [que_id] => 2
                [ops_qid] => 2
                [0] => Array
                    (
                        [ops_contentoid] => C
                        [ops_content] => 踩踩踩从踩踩踩踩踩踩
                        [ops_count] => 0
                    )            [1] => Array
                    (
                        [ops_contentoid] => D
                        [ops_content] => 顶顶顶顶顶顶顶顶
                        [ops_count] => 0
                    )        ))
      

  3.   

    哦,多了一项还少了个键$d1 = array(
        'que_content' => '',
        'que_id' => '',
    );
    $d2 = array(
        'que_content' => '',
        'que_id' => '',
        'ops_qid' => '',
    );
    $res = array();
    foreach($ar as $item) {
      if(! isset($res[$item['que_id']])) $res[$item['que_id']] = array_intersect_key($item, $d1);
      $res[$item['que_id']]['opt'][] = array_diff_key($item, $d2);
    }