php print_r方法可以把變量打印顯示,使變量易于理解。如果變量是string,integer或float,將打印變量值本身,如果變量是array,將會按照一定格式顯示鍵和元素。object與數(shù)組類似。print_r用于打印數(shù)組較多。
php原生沒有把print_r方法打印后的數(shù)據(jù)還原為原始數(shù)組,因此寫了下面這個方法,實現(xiàn)將print_r處理后的數(shù)據(jù)還原為原始數(shù)組。
RestorePrint.html' target='_blank'>class.php
?php/** * 將print_r處理后的數(shù)據(jù)還原為原始數(shù)組 * 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;// 顯示打印的數(shù)據(jù)echo 顯示打印的數(shù)據(jù) 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 還原為數(shù)組 br var_dump($result);?
輸出:
顯示打印的數(shù)據(jù)Array( [name] = fdipzone [gender] = male [age] = 18 [profession] = programmer [detail] = Array( [grade] = 1 [addtime] = 2016-10-31還原為數(shù)組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處理后的數(shù)據(jù)還原為原始數(shù)組的方法,更多相關(guān)內(nèi)容請關(guān)注php 。
相關(guān)推薦:
通過php中的PDO判斷連接是否可用的方法
通過php 判斷頁面或圖片是否經(jīng)過gzip壓縮
HTML5獲取當(dāng)前地理位置并在百度地圖上展示的實例
以上就是如何通過php 將print_r處理后的數(shù)據(jù)還原為原始數(shù)組的方法的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選