php递归json类实例

2015-01-24信息快讯网

这篇文章主要介绍了php递归json类的实现方法,可以实现对索引数组及数字数组的解析,进而实现递归数组返回json字符串的功能,需要的朋友可以参考下

本文实例讲述了php递归json类的实现方法。分享给大家供大家参考。

具体实现代码如下:

<?php 
/*  
 * @ anthor:QD 
 * @ time:  2013-09-27 
 */ 
class json{ 
 private $Arr = array(); //传入数组 
 //构造器 
 public function json($array) 
 { 
  if(!is_array($array)) return false; 
  $this->Arr = $array; 
 } 
 //解析主函数 
 public function MainArr() 
 { 
  $arr = $this->Arr; 
  if($this->TypeArr($arr)) 
  { 
   $json = $this->NumArr($arr); 
  } 
  else 
  { 
   $json = $this->IndexArr($arr); 
  } 
  return $json; 
 } 
 //解析索引数组 
 public function IndexArr($arr) 
 { 
  $str =""; 
  foreach($arr as $k=>$value) 
  { 
   if(is_array($value)) 
   { 
    if($this->TypeArr($value)) { $sun=$this->NumArr($value);} 
    else               {$sun=$this->IndexArr($value);} 
    if(strpos($sun,"}") || strpos($sun,"]")) 
    { 
     $str .= """.$k."":".$sun.","; 
    } 
    else 
    { 
     $str .= """.$k."":"".$sun."","; 
    } 
   } 
   else 
   { 
     $str .= """.$k."":"".$value."","; 
   } 
  } 
  $str = "{".trim($str,",")."}"; 
  return $str; 
 } 
 //解析数字数组 
 public function NumArr($arr)  
 { 
  $str = ""; 
  foreach($arr as $value) 
  { 
   if(is_array($value)) 
   { 
    if($this->TypeArr($value)) { $sun=$this->NumArr($value);} 
    else               {$sun=$this->IndexArr($value);} 
    if(strpos($sun,"}") || strpos($sun,"]")) 
    { 
     $str .= $sun.","; 
    } 
    else 
    { 
     $str .= """.$sun."","; 
    } 
   } 
   else 
   { 
    $str .= """.$value."","; 
   } 
  } 
  $str = "[".trim($str,",")."]"; 
  return $str; 
 } 
 //检验一个数组是不是严格数字索引    
 public function TypeArr($arr) 
 { 
  if(array_values($arr) === $arr) return true; 
  return false; 
 } 
} 
?>

希望本文所述对大家的PHP程序设计有所帮助。

©2014-2024 dbsqp.com