PHP7中文手册2018 带注释 最新chm版
描述:
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字符串格式