php中数组转换为json,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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值