>  기사  >  백엔드 개발  >  php数结合并 高手挑战

php数结合并 高手挑战

WBOY
WBOY원래의
2016-06-13 13:22:40810검색

php数组合并 高手挑战
将以下数组合并为一个数组
Array
(
  [0] => Array
  (
  [id] => default
  [name] => aaa
  [tel] => bbb
  [age] => ccc
  )

  [1] => Array
  (
  [id] => 11
  [name] => aaa
  [tel] => bbb
  [age] => ccc
  )

  [2] => Array
  (
  [id] => 22
  [name] => aaa
  [tel] => bbb
  [age] => ccc
  )

  [3] => Array
  (
  [id] => 33
  [name] => aaa
  [tel] => bbb
  [age] => ccc
  )

  [4] => Array
  (
  [id] => 44
  [name] => new
  [tel] => eee
  [age] => fff
  )

  [5] => Array
  (
  [id] => 66
  [name] => new
  [tel] => eee
  [age] => fff
  )

)


将以上数组合并为下面的数组

Array
(
  [0] => Array
  (
  [id] => array(
  [0] => default
  [1] => 11
  [2] => 22
  [3] => 33
  )
  [name] => aaa
  [tel] => bbb
  [age] => ccc
  )

  [1] => Array
  (
  [id] => array(
  [0] => 44,
  [1] => 66
  )
  [name] => new
  [tel] => eee
  [age] => fff
  )

)

------解决方案--------------------

PHP code
$ar = array (
  0 => 
  array (
    'id' => 'default',
    'name' => 'aaa',
    'tel' => 'bbb',
    'age' => 'ccc',
  ),
  1 => 
  array (
    'id' => '11',
    'name' => 'aaa',
    'tel' => 'bbb',
    'age' => 'ccc',
  ),
  2 => 
  array (
    'id' => '22',
    'name' => 'aaa',
    'tel' => 'bbb',
    'age' => 'ccc',
  ),
  3 => 
  array (
    'id' => '33',
    'name' => 'aaa',
    'tel' => 'bbb',
    'age' => 'ccc',
  ),
  4 => 
  array (
    'id' => '44',
    'name' => 'new',
    'tel' => 'eee',
    'age' => 'fff',
  ),
  5 => 
  array (
    'id' => '66',
    'name' => 'new',
    'tel' => 'eee',
    'age' => 'fff',
  ),
);

$res = array();
foreach($ar as $r) {
  $k = "$r[name]--$r[tel]--$r[age]";
  if(! isset($res[$k])) {
    $res[$k] = $r;
    $res[$k]['id'] = array();
  }
  $res[$k]['id'][] = $r['id'];
}
$res = array_values($res);
print_r($res); <div class="clear">
                 
              
              
        
            </div>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.