Heim >Backend-Entwicklung >PHP-Tutorial >php数据转换为html table或者csv文件

php数据转换为html table或者csv文件

WBOY
WBOYOriginal
2016-06-23 13:44:59764Durchsuche

应用场景:游戏中的很多业务已经迁移到了redis上,但是redis中的数据在运维层面很难展现,通过php-redis将redis中的set或者hash转换为php中的array,然后映射为html中的table


具体展现:


主要设计点:table的基本单位是单元格row_field_node,多个row_field_node组成row_data, tile + 多个row_data = table。因为每个单元格都可能有对应的超链接响应,

所以row_field_node数据结构是这样的:

class row_field_node{        public $data;           //显示的数据        public $action;         //对应的超链接        public $param;          //超链接需要传入的参数        public $target;         //超链接要展现在那个frame中        public function __construct($data, $action, $param, $target)        {                $this->data     = $data;                $this->action   = $action;                $this->param    = $param;                $this->target   = $target;        }}

array中的数组与hash可以输出为html table或者是csv文件,具体实现见代码:

<?phpheader ("Content-type: text/html; charset=utf-8");$domain_name = "192.168.1.1";class row_field_node{	public $data;	public $action;	public $param;	public $target;	public function __construct($data, $action, $param, $target)	{		$this->data 	= $data;                      		$this->action 	= $action;                   		$this->param 	= $param;     		$this->target 	= $target;                      	}}class xtable{	private $title_list,$row_list,$fonts,$table_tag;	public function __construct()	{		$this->title_list=array();                          // strings with titles for first row 		$this->row_list=array();                          // data to show on cells		$this->fonts=array("#EEEEEE","#CCEEEE");      // background colors for odd and even rows		$this->table_tag="";                            // extra html code for table tag	}	public function set_table_tag($table_tag)                       // add some html code for the tag table	{		$this->table_tag=$table_tag;	}	public function background($fonts) 	{		if (is_array($fonts)) 		{			$this->fonts=$fonts; 		}		else		{ 			$this->fonts=array($fonts,$fonts);		}	}	public function addrow($row_data) 	{		$this->row_list[]=$row_data;	}	public function hash_output($data)	{		$this->title_list=array("field", "value");		foreach($data as $key=> $value)		{			$row_data = array();			$field_data = new row_field_node($key, "", "", "");			array_push($row_data, $field_data);			$field_data = new row_field_node($value, "", "", "");			array_push($row_data, $field_data);			$this->addrow($row_data);		}		return $this->html();	}	public function set_output($title, $data, $desc = '')	{		$this->title_list = $title;		$this->row_list = $data;		echo "total:".count($data).' '.$desc . "<br>";		return $this->html();	}	public function html()	{		$cfondos=$this->fonts;		//output title		$output_content="<tr>";		$t_count=count($this->title_list);		for($t_idx = 0; $t_idx %s",$this->title_list[$t_idx]);		}		$output_content.="</tr>";		//start outputing data rows		$table_row_content="";		$row_count=count($this->row_list);		for($row_idx = 0; $row_idx ", $this->fonts[$row_idx % 2]);						$line_data_list = $this->row_list[$row_idx];						$col_count = count($line_data_list);			if($col_count != $t_count)			{				echo "row field count not match title count|col:".$col_count."|title:".$t_count;				exit;			}			for($col_idx = 0; $col_idx action != "")				{					//echo $line_data_list[$col_idx]->action."----".$line_data_list[$col_idx]->param."----".$line_data_list[$col_idx]->target."----".$line_data_list[$col_idx]->data."===============";					$table_row_content.=sprintf("<td align='\"center\"'><a href="%5C%22http://%24domain_name/%s?%s%5C%22" target="%s">  %s  </a></td>",						$line_data_list[$col_idx]->action, $line_data_list[$col_idx]->param, $line_data_list[$col_idx]->target,						$line_data_list[$col_idx]->data);									}				else				{					$table_row_content.=sprintf("<td align='\"center\"'>   %s          </td>", $line_data_list[$col_idx]->data);				}			}			$table_row_content.="";		}		return sprintf("
%s%s
",$this->table_tag,$output_content,$table_row_content); } public function csv_output($title, $data) { $this->title_list = $title; $this->row_list = $data; echo "total:".count($data)."
"; return $this->csv(); } public function csv() { $file_name = time(0).".rar"; $fp = fopen($file_name, 'w'); $t_count=count($this->title_list); //start outputing data rows $row_count=count($this->row_list); $file_data = ""; $csv_row_data = ""; for($t_idx = 0; $t_idx title_list[$t_idx]; } $file_data = $file_data.$csv_row_data."\n"; for($row_idx = 0; $row_idx row_list[$row_idx]; $col_count = count($line_data_list); if($col_count != $t_count) { echo "row field count not match title count|col:".$col_count."|title:".$t_count; exit; } $csv_row_data = ""; for($col_idx = 0; $col_idx data; } $file_data = $file_data.$csv_row_data."\n"; } fwrite($fp, $file_data); Global $domain_name; echo "
csvfile:$file_name"; }}?>



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn