php 将php数组还原成php源代码
将php数组还原成php源代码 说明:本程序将用于php代码中的数组调试,由于工作原因,经常要将php数组json化后传给客户端javascript,但是这些php数组是否符合格式的json字符串。往往数组传
说明:本程序将用于php代码中的数组调试,由于工作原因,经常要将php数组json化后传给客户端javascript,但是这些php数组是否符合格式的jso n字符串。往往数组传递过去了,但是前台没按要求显示出来。很可能是json_encode($arr)中的$arr格式不对,这时候用var_dump($arr) 打印出来的不是php代码的数组,于是自己写了这个功能,用于将php数组还原成php源码,这样就方便复制后修改,调试了。
#!/usr/bin/php -a
<?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);
?>
//该片段来自于http://outofmemory.cn
精彩图集
精彩文章






