php递归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程序设计有所帮助。