1. 程式人生 > >php陣列縱向轉橫向

php陣列縱向轉橫向

  1. $a = array(  
  2.     6=>array(5=>'黑xx', 42=>'XXL'),  
  3.     7=>array(5=>'黑xx', 40=>'XL'),  
  4.     8=>array(8=>'灰',   40=>'XL'),  
  5. );  
  6. foreach($aas$r) {  
  7.   $i = 0;  
  8.   while(list($k$v) = each($r)) $b[$i++][$k] = $v;  
  9. }  
  10. print_r($b);  


笨方法,但實現效果了,期待好的方法

  1. //a1
  2. array(  
  3.     6=>array
    ('黑xx''XXL'),  
  4.     7=>array('黑xx''XL'),  
  5.     8=>array('灰',   'XL'),  
  6. );  
  7. //a2
  8. array(  
  9.     6=>array(5, 42),  
  10.     7=>array(5, 40),  
  11.     8=>array(8, 40),  
  12. );  
  13. //結果:
  14. array(  
  15.     0=>array(5=>'黑xx', 8=>'灰'),  
  16.     1=>array(42=>'XXL', 40=>'XL'),  
  17. );  
  18. //笨方法實現 
  19. //合併a1,a2 = a3
  20. $a3 = array(  
  21.     6=>array(5=>'黑xx', 42=>'XXL'),  
  22.     7=>array(5=>'黑xx', 40=>'XL'),  
  23.     8=>array(8=>'灰',   40=>'XL'),  
  24. );  
  25. //鍵名初始從0遞增
  26. $a3_new = array();  
  27. foreach($a3as$v)  
  28. {  
  29.     $a3_new[] = array_merge($v);  
  30. }  
  31. //x長度
  32. $x = count($a3_new[0]);  
  33. //結果陣列
  34. $ary = array();  
  35. //因為是合併縱(y)列,所以陣列長度=x長度(2列)
  36. for($i=0; $i<$x$i++)  
  37. {  
  38.     $x_list = array();//y列所有值
  39.     //遍歷y列
  40.     foreach($a3_newas$v)  
  41.     {  
  42.         $x_list[] = $v[$i];  
  43.     }  
  44.     $ary[] = $x_list;  
  45. }  
  46. print_r($ary);  
  47. exit;