最新消息: 新版网站上线了!!!

Php 数组转换为Json字符串格式

描述:
Json是纯文本,在php代码中json格式的内容是字符串,类似xml

转换:
Json格式的字符串可以转换为php数组和对象,反转也是可以的,转换和反转是接受的数据格式只能是utf8的,所以如果数据数gbk格式,首页要转换为utf8的

Php中json字符串的结构形式2种:
1.数组结构:[]    例:[“one”,”two”,”three”]  数组结构是由索引数组转化而来
2.对象结构:{}      例:{“1”:”one”,”2”:”two”,”3”:”three”}  对象结构是由关联数组和对象类型的数据转化而来
3.还有是数组结构和对象结构混合使用:{[]}
注意:这里说的数组和对象只是显示的结构形式,不是数据类型

数组转换为json格式的字符串
1. 转换时考虑把数据编码格式转码为utf-8格式,因为json_encode()只接受utf-8格式的数据,所以要判断数据编码格式

要转换的数组

$datas = Array
(
    Array
        (
            'house_name' => '海伦春天1',
            'thumb' => 'http://127.0.0.1/house/uploadfile/2016/0610/20160610033447681.jpg',
            'address' => '西安西咸新区阿房一路海伦春天',
            'estate' => '0',
            'style' => '',
            'price' => '5800',
        )
);
$datas = arr2string($datas,'gbk');
print_r($datas);
/**
* 数组转换为json格式的字符串
* $data 传递的数组
* $icon 传入数据的编码格式,默认为utf-8,由于咱们中国人开发的程序只要是utf-8和gbk居多,所以这里只要围绕这2个编码测试
*/
function arr2string($data,$icon='utf-8'){
    if($icon=='gbk'){  
        $data = m_iconv('gbk','utf-8',$data);
    }
    if(version_compare(PHP_VERSION,'5.3.0','<')){
        $data = json_encode($data);
    }else{
        $data = json_encode($data,JSON_FORCE_OBJECT);
    }
    return $data;
}
//多维数组编码格式转换
function m_iconv($in_charset,$out_charset,$datas){
    if(is_array($datas)){                            //如果数据为数组
        foreach($datas as $k=>$v){
            if(is_array($v)){                        //如果数据为多维数组,进行下面的递归调用m_iconv()函数自身
                $k = iconv($in_charset,$out_charset,$k);
                $ml[$k] = m_iconv($in_charset,$out_charset,$v); 
            }elseif(is_string($k) || is_string($v)){        //如果是一维数组判断键和值是否为字符串
                if(is_string($k)){
                    $k = iconv($in_charset,$out_charset,$k);
                }
                if(is_string($v)){
                    $v = iconv($in_charset,$out_charset,$v);
                }
                $ml[$k] = $v; 
            }else{
                $ml[$k] = $v;                    //一维数组键和值都为数组
            }
        }
    }elseif(is_string($datas)){                        //如果数据为字符串
        $ml = iconv($in_charset,$out_charset,$datas);
    }else{
        $ml = $datas;                                //如果数据为数值
    }
    return $ml;
}


转载请注明:谷谷点程序 » Php 数组转换为Json字符串格式