首页 > 编程 > PHP > 正文

如何通过php 将print_r处理后的数据还原为原始数组

2020-03-22 19:50:50
字体:
来源:转载
供稿:网友

php print_r方法可以把变量打印显示,使变量易于理解。如果变量是string,integer或float,将打印变量值本身,如果变量是array,将会按照一定格式显示键和元素。object与数组类似。print_r用于打印数组较多。

php原生没有把print_r方法打印后的数据还原为原始数组,因此写了下面这个方法,实现将print_r处理后的数据还原为原始数组。

RestorePrint.html' target='_blank'>class.php

 ?php/** * 将print_r处理后的数据还原为原始数组 * Date: 2016-10-31 * Author: fdipzone * Ver: 1.0 */class RestorePrint{ // class start public $res = array(); protected $dict = array(); protected $buf = protected $keyname = protected $stack = array(); public function __construct() { $this- stack[] = $this-  } public function __call($method, $param){ echo $this- buf . not defined mehtod: .$method. param: .implode( , , $param); } public function set($word, $value= ){ if(is_array($word)){ foreach($word as $k= $v){ $this- set($k, $v); } $p = $this- dict; foreach(str_split($word) as $ch){ if(!isset($p[$ch])){ $p[$ch] = array(); } $p = $p[$ch]; } $p[ val ] = $value; return $this; } public function parse($str){ $this- doc = $str; $this- len = strlen($str); $i = 0; while($i $this- len){ $t = $this- find($this- dict, $i); if($t){ $i = $t; $this- buf =  }else{ $this- buf .= $this- doc{$i++}; } protected function find( $p, $i){ if($i = $this- len){ return $i; } $t = 0; $n = $this- doc{$i}; if(isset($p[$n])){ $t = $this- find($p[$n], $i+1); } if($t){ return $t; } if(isset($p[ val ])){ $arr = explode( , , $p[ val  call_user_func_array(array($this, array_shift($arr)), $arr); return $i; } return $t; } protected function group(){ if(!$this- keyname){ return ; } $cnt = count($this- stack)-1; $this- stack[$cnt][$this- keyname] = array(); $this- stack[] = $this- stack[$cnt][$this- keyname]; $this- keyname =  } protected function brackets($c){ $cnt = count($this- stack)-1; switch($c){ case ) : if($this- keyname){ $this- stack[$cnt][$this- keyname] = trim($this- buf); } $this- keyname =  array_pop($this- stack); break; case [ : if($this- keyname){ $this- stack[$cnt][$this- keyname] = trim($this- buf); } break; case ] : $this- keyname = $this- break; } $this- buf = } // class end? 

demo.php

 ?phprequire RestorePrint.class.php $print_r_data = TXTArray [name] = fdipzone [gender] = male [age] = 18 [profession] = programmer [detail] = Array( [grade] = 1 [addtime] = 2016-10-31TXT;// 显示打印的数据echo 显示打印的数据 br echo pre .$print_r_data. /pre $oRestorePrint = new RestorePrint;$oRestorePrint- set( Array , group $oRestorePrint- set( [ , brackets,[ $oRestorePrint- set( ] = , brackets,] $oRestorePrint- set( ) , brackets,) $oRestorePrint- parse($print_r_data);$result = $oRestorePrint- echo 还原为数组 br var_dump($result);? 

输出:

显示打印的数据Array( [name] = fdipzone [gender] = male [age] = 18 [profession] = programmer [detail] = Array( [grade] = 1 [addtime] = 2016-10-31还原为数组array (size=5) name = string fdipzone (length=8) gender = string male (length=4) age = string 18 (length=2) profession = string programmer (length=10) detail =  array (size=2) grade = string 1 (length=1) addtime = string 2016-10-31 (length=10)

本文讲解了php 将print_r处理后的数据还原为原始数组的方法,更多相关内容请关注php 。

相关推荐:

通过php中的PDO判断连接是否可用的方法

通过php 判断页面或图片是否经过gzip压缩

HTML5获取当前地理位置并在百度地图上展示的实例

以上就是如何通过php 将print_r处理后的数据还原为原始数组的方法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表