Array ( 
[0] => Array ( [id] => 809 [img_url] => A1 )
[1] => Array ( [id] => 809 [img_url] => A2 ) 
[2] => Array ( [id] => 809 [img_url] => A3) 
[3] => Array ( [id] => 809 [img_url] => A4 ) 
[4] => Array ( [id] => 809 [img_url] => A5 ) 
[5] => Array ( [id] => 1809 [img_url] => B1 ) 
[6] => Array ( [id] => 1809 [img_url] => B2 ) 
[7] => Array ( [id] => 2809 [img_url] => C1 ) 
[8] => Array ( [id] => 2809 [img_url] => C2 ) 
)
请问怎么把上面这个数组变成这个样子?代码怎么写?
Array ( 
[0] => Array ( [id] => 809  [img_url] => A1,A2,A3,A4,A5 )
[1] => Array ( [id] => 1809 [img_url] => B1,B2) 
[2] => Array ( [id] => 2809 [img_url] => C1,C2) 
)

解决方案 »

  1.   


    $par = array(
      array('id'=>809,'img_url'=>'A1'),
      array('id'=>809,'img_url'=>'A2'),
      array('id'=>809,'img_url'=>'A3'),
      array('id'=>809,'img_url'=>'A4'),
      array('id'=>809,'img_url'=>'A5'),
      array('id'=>1809,'img_url'=>'B1'),
      array('id'=>1809,'img_url'=>'B2'),
      array('id'=>2809,'img_url'=>'C1'),
      array('id'=>2809,'img_url'=>'C2'));
     function process($par){
      if(is_array($par)){
      $ret = array();
      $comma = ',';
      foreach($par as $val){
      if($val['id'] == $tmp['id']){
      $tmp['img_url'] = $tmp['img_url'].$comma.$val['img_url'];
      }else{
      if($tmp != ''){
      $ret[] = $tmp;
      }
      $tmp = $val;
      }
      }
      return $ret;
      }else{
      return $par;
      }
     }
     
     $ret = process($par);
     
     var_dump($ret);
      

  2.   

    $par = array(
                         array('id'=>809,'img_url'=>'A1'),
                         array('id'=>809,'img_url'=>'A2'),
                         array('id'=>809,'img_url'=>'A3'),
                         array('id'=>809,'img_url'=>'A4'),
                         array('id'=>809,'img_url'=>'A5'),
                         array('id'=>1809,'img_url'=>'B1'),
                         array('id'=>1809,'img_url'=>'B2'),
                         array('id'=>2809,'img_url'=>'C1'),
                         array('id'=>2809,'img_url'=>'C2')
                     );
                     
         foreach($par as $v)
         {
          $newArray[$v['id']] = array('id'=>$v['id']
             ,'img_url'=>$newArray[$v['id']] ? $newArray[$v['id']]['img_url'].','.$v['img_url'] : $v['img_url']
             );
         }
         
         echo "<pre/>";
         print_r(array_values($newArray));