Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/01/2010, 04:50
sergi_climent
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
Pasar de Array a Tabla con formato de Columnas

Hola,

tengo un array estructurado de la siguiente manera

Código:
Array
(
    [0] => Array
        (
            [SETMANA] => 1
            [KILOS] => 181584.34
            [EUROS] => 876364.6
        )

    [1] => Array
        (
            [SETMANA] => 2
            [KILOS] => 220296.9
            [EUROS] => 1029497.76
        )

    [2] => Array
        (
            [SETMANA] => 3
            [KILOS] => 242783.99
            [EUROS] => 1101250.33
        )
}
uso una función para pasarle este array y me devuelva una tabla con los datos.
El problema lo tengo en querer darle formato a los datos, es decir, que Kilos y Euros tengan un tipo de formato que no afecte a setmana.

el codigo es el siguiente

Código PHP:
Ver original
  1. function array_taula($array, $recursive = false, $return = false, $null = ' '){
  2.    
  3.       // Check Array
  4.       if(empty($array) || !is_array($array)){ return false; }
  5.       if(!isset($array[0]) || !is_array($array[0])){ $array = array($array); }
  6.      
  7.       // Inici de la Taula
  8.       $table = "<table border='1'>\n";
  9.       // La Capcelera
  10.       $table .= "\t<tr>";
  11.       // Noms de la Capcelera
  12.       foreach (array_keys($array[0]) as $heading) {
  13.    
  14.           $table .= '<th>' . $heading . '</th>';
  15.    
  16.       }
  17.       $table .= "</tr>\n"; 
  18.    
  19.       // --Les Linies de la Taula
  20.       foreach ($array as $row) {
  21.        
  22.           $table .= "\t<tr>" ;
  23.          
  24.           foreach ($row as $cell) {
  25.            
  26.               $table .= '<td align=right>';
  27.              
  28.               // Crida l'Objecte
  29.               if (is_object($cell)) { $cell = (array) $cell; }
  30.    
  31.               if ($recursive === true && is_array($cell) && !empty($cell)) {
  32.    
  33.                   // Mode Recursiu
  34.                   $table .= "\n" . array_taula($cell, true, true) . "\n";
  35.    
  36.               } else {
  37.                    
  38.                   if(is_numeric($cell)){ $cell = number_format($cell,'',',','.'); }
  39.                  
  40.                   $table .= (strlen($cell)> 0) ?
  41.    
  42.                   htmlspecialchars((string) $cell) :
  43.  
  44.                   $null;
  45.    
  46.               }
  47.               $table .= '</td>';
  48.           }
  49.           $table .= "</tr>\n";
  50.       }
  51.    
  52.       // Final de la Taula
  53.       $table .= '</table>';
  54.    
  55.       // Metode de Sortida
  56.       if ($return === false) {
  57.    
  58.           echo $table;
  59.    
  60.       } else {
  61.    
  62.           return $table;
  63.    
  64.       }
  65.    
  66.     }

Probé con el is_numeric, pero claro, hay números que no quiero darle un formato sino otro... como puedo distinguir unos de otros???

--> se me ha pasado por la cabeza, que cuando llamo a la función y le paso el array, añadirle el tipo de formato que quiero para cada columna... que opináis?
-->si es así, como puedo detectar en que columna estoy en cada momento?


Saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 19/01/2010 a las 05:31