将php数组还原成php源代码
程序员文章站
2022-05-02 12:34:07
...
1. [代码][PHP]代码
<?php //说明:本程序将用于php代码中的数组调试,由于工作原因,经常要将php数组json化后传给客户端javascript,但是这些php数组是否是 //符合格式的json字符串。往往数组传递过去了,但是前台没按要求显示出来。很可能是json_encode($arr)中的$arr格式不对,这时候用 //var_dump($arr)打印出来的不是php代码的数组,于是自己写了这个功能,用于将php数组还原成php源码,这样就方便复制后修改,调试了。 //--------------------array to code---------------------------start //四个函数 //function is_assoc_array($array);判断是否是关联数组 //function array_index_code(); 返回索引字符串源码 //function array_assoc_code(); 返回关联字符串源码 function is_assoc_array($array){ return array_keys($array) !== range(0, count($array) - 1);} /*打印如下字符串[索引数组源码]: array( "111", '222', "333", ) */ function array_index_code($arr,$tab){ $code = str_repeat("\t",$tab). "array(\n"; if( $arr ){ foreach( $arr AS $v){ if(is_int($v)){ $code .= str_repeat("\t",$tab). "$v,\n"; }elseif(is_array($v)){ $code .= array_code($v,$tab); //递归调用.索引数组不需要用tab+2 }else{ $code .= str_repeat("\t",$tab). "'$v',\n"; } } } $code .= str_repeat("\t",$tab). "),\n"; //尾部有逗号 return $code; } /*打印如下字符串[关联数组源码]: array( "aaa"=>"111", "bbb"=>'222', "ccc'=> array( ), ) */ function array_assoc_code($arr,$tab){ $code = str_repeat("\t",$tab). "array(\n"; if( $arr ){ foreach( $arr AS $k=>$v){ if(is_int($v)){ $code .= str_repeat("\t",$tab). "'$k'=>$v,\n"; }elseif(is_array($v)){ $code .= str_repeat("\t",$tab). "'$k'=>\n". array_code($v,$tab+2); //递归调用,关联数组需要用tab+2 }else{ $code .= str_repeat("\t",$tab). "'$k'=>'$v',\n"; } } } $code .= str_repeat("\t",$tab). "),\n"; //尾部有逗号 return $code; } /* 打印数组,打印成php代码 */ function array_code($arr,$tab=0){ if(is_assoc_array($arr)){ return array_assoc_code($arr,$tab); }else{ return array_index_code($arr,$tab); } } //--------------------array to code---------------------------end //测试例子 $arrTEST = array( "aaa"=>"111", "bbb"=> array( 1, 3, array( "wu"=>1, "jun"=>2, "jie"=>array( "aaa"=>"bbb", "ccc"=>"ddd", ), ) ), ); //var_dump($arrTEST);die; echo array_code($arrTEST); ?>
上一篇: nginx 反向代理和正向代理区别
下一篇: mysql 怎么从多种维度删选商品