Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/11/2014, 12:06
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: pasar fila de números a columnas

Facilmente puedes adaptar estos ejemplos...


Código PHP:
Ver original
  1. <?php
  2. $foo=array(
  3.     0 => array(
  4.             0 => 'a1',
  5.             1 => 'a2',
  6.             2 => 'a3'
  7.         ),
  8.  
  9.     1 => array(
  10.             0 => 'a1',
  11.             1 => 'a2',
  12.             2 => 'a3'
  13.         ),
  14.  
  15.     2 => array(
  16.             0 => 'a1',
  17.             1 => 'a2',
  18.             2 => 'a3'
  19.         )
  20.  
  21. );
  22.  
  23. $foo2 = array(
  24.     0 => array(
  25.        'a' => 'a1',
  26.        'b' => 'a2',
  27.        'c' => 'a3'
  28.     ),
  29.     1 => array(
  30.        'a' => 'b1',
  31.        'b' => 'b2',
  32.        'c' => 'b3'
  33.     ),
  34.     2 => array(
  35.        'a' => 'c1',
  36.        'b' => 'c2',
  37.        'c' => 'c3'
  38.     ),
  39.     3 => array(
  40.        'a' => 'd1',
  41.        'b' => 'd2',
  42.        'c' => 'd3'
  43.     )
  44. );
  45. echo "<pre>";
  46. print_r($foo);
  47. echo "</pre>";
  48.  
  49. $elements=count($foo, COUNT_RECURSIVE);
  50. $files=count($foo);
  51. $elementsFila=($elements-$files)/$files;
  52.  
  53. echo "<br />elements ".$elements.", ";
  54. echo "files ".$files.", ";
  55. echo "elementsFila ".$elementsFila."<br /><br />";
  56.  
  57. echo "Array tal cual<br /><br />";
  58.  
  59. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  60. for($f=0;$f<$files;$f++){
  61. echo "<tr>";
  62.     for($e=0;$e<$elementsFila;$e++){
  63.         echo "<td>".$foo[$f][$e]."</td>";
  64.     }
  65. echo "</tr>";
  66.     }
  67. echo  "</table>";
  68. echo  "<br /><br />";
  69. echo "Array transpuesta<br /><br />";
  70. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  71. for($e=0;$e<$elementsFila;$e++){
  72.         echo "<tr>";
  73.     for($f=0;$f<$files;$f++){
  74.             echo "<td>".$foo[$f][$e]."</td>";
  75.     }
  76.         echo "</tr>";
  77. }
  78. echo  "</table>";
  79. echo  "<br /><br />";
  80. echo "Array invertida<br /><br />";
  81. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  82. for($f=$files-1;$f>=0;$f--){
  83. echo "<tr>";
  84.     for($e=$elementsFila-1;$e>=0;$e--){
  85.         echo "<td>".$foo[$f][$e]."</td>";
  86.     }
  87. echo "</tr>";
  88.     }
  89. echo  "</table>";
  90.  
  91. echo "<br /><br />";
  92.  
  93. echo "<pre>";
  94. print_r($foo2);
  95. echo "</pre>";
  96.  
  97. $elements=count($foo2, COUNT_RECURSIVE);
  98. $files=count($foo2);
  99. $elementsFila=($elements-$files)/$files;
  100. $claus=array_keys($foo2[0]);
  101.  
  102. echo "<pre>";
  103. print_r($claus);
  104. echo "</pre>";
  105.  
  106.  
  107. echo "<br />elements ".$elements.", ";
  108. echo "files ".$files.", ";
  109. echo "elementsFila ".$elementsFila."<br /><br />";
  110.  
  111. echo "Array tal cual<br /><br />";
  112.  
  113. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  114. for($f=0;$f<$files;$f++){
  115. echo "<tr>";
  116.     for($e=0;$e<count($claus);$e++){
  117.         echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  118.     }
  119. echo "</tr>";
  120.     }
  121. echo  "</table>";
  122. echo  "<br /><br />";
  123. echo "Array transpuesta<br /><br />";
  124. $foo3=array();
  125. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  126. for($e=0;$e<count($claus);$e++){
  127.         echo "<tr>";
  128.     for($f=0;$f<$files;$f++){
  129.             echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  130.             $foo3[$claus[$e]][$f]=$foo2[$f][$claus[$e]];
  131.     }
  132.         echo "</tr>";
  133. }
  134.  
  135. echo  "</table>";
  136. echo  "<br /><br />";
  137. echo "Array invertida<br /><br />";
  138. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  139. for($f=$files-1;$f>=0;$f--){
  140. echo "<tr>";
  141.     for($e=count($claus)-1;$e>=0;$e--){
  142.         echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  143.     }
  144. echo "</tr>";
  145.     }
  146. echo  "</table>";
  147.  
  148. echo  "<br /><br />Aqui tenemos foo3 que es foo2 transpuesta<br /><br />";
  149.  
  150. echo "<pre>";
  151. print_r($foo3);
  152. echo "</pre>";
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/11/2014 a las 12:20