大牛的方法http://bbs.csdn.net/topics/390848153?page=1#post-397891735
- $a = array(
- 6=>array(5=>'黑xx', 42=>'XXL'),
- 7=>array(5=>'黑xx', 40=>'XL'),
- 8=>array(8=>'灰', 40=>'XL'),
- );
- foreach($a as $r) {
- $i = 0;
- while(list($k, $v) = each($r)) $b[$i++][$k] = $v;
- }
- print_r($b);
笨方法,但实现效果了,期待好的方法
- //a1
- array(
- 6=>array('黑xx', 'XXL'),
- 7=>array('黑xx', 'XL'),
- 8=>array('灰', 'XL'),
- );
- //a2
- array(
- 6=>array(5, 42),
- 7=>array(5, 40),
- 8=>array(8, 40),
- );
- //结果:
- array(
- 0=>array(5=>'黑xx', 8=>'灰'),
- 1=>array(42=>'XXL', 40=>'XL'),
- );
- //笨方法实现
- //合并a1,a2 = a3
- $a3 = array(
- 6=>array(5=>'黑xx', 42=>'XXL'),
- 7=>array(5=>'黑xx', 40=>'XL'),
- 8=>array(8=>'灰', 40=>'XL'),
- );
- //键名初始从0递增
- $a3_new = array();
- foreach($a3 as $v)
- {
- $a3_new[] = array_merge($v);
- }
- //x长度
- $x = count($a3_new[0]);
- //结果数组
- $ary = array();
- //因为是合并纵(y)列,所以数组长度=x长度(2列)
- for($i=0; $i<$x; $i++)
- {
- $x_list = array();//y列所有值
- //遍历y列
- foreach($a3_new as $v)
- {
- $x_list[] = $v[$i];
- }
- $ary[] = $x_list;
- }
- print_r($ary);
- exit;