php返回json数组元素,php生成返回json对象数组(json支持中文)
php生成返回json对象数组
注意两种方法生成的对象数组在结构上的区别
$jarr=array(
'total' => 239,
'list' => array(
array(
'code'=>'001',
'name'=>'中国',
'addr'=>'Address 11',
'col4'=>'col4 data'
),
array(
'code'=>'002',
'name'=>'Name 2',
'addr'=>'Address 12',
'col4'=>'col4 data'
),
)
);
?>
php生成返回json对象数组(方法一)
$jobj=new stdclass(); //实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,所以我们生成的时候也要把数据存储在对象中。
foreach($jarr as $key=>$value){
$jobj->$key=$value;
}
print_r($jobj);//打印传递属性后的对象
echo'使用$jobj->list[0][\'code\']输出数组元素:'.$jobj->list[0]['code'].'
';
echo'编码后的json字符串:'.json_encode($jobj).'
';
?>
php生成返回json对象数组(方法二)
echo'编码后的json字符串:';
echo $str=json_encode($jarr);//将数组进行json编码
echo'
';
$arr=json_decode($str);//再进行json解码
print_r($arr);//打印解码后的数组,数据存储在对象数组中
echo'使用$arr->list[0]->code输出数组元素:'.$arr->list[0]->code;
?>
改下
你会发现上面虽然我页面和传入字符对定义了为UTF-8,为什么生成的json数据还是乱码:
"name":"\u4e2d\u56fd".....
现在想办法将这串不知道什么的转为中文:
解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。/**************************************************************
*
* 使用特定function对数组中所有元素做处理
* @param string &$array 要处理的字符串
* @param string $function 要执行的函数
* @return boolean $apply_to_keys_also 是否也应用到key上
* @access public
*
*************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/**************************************************************
*
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
*
*************************************************************/
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
echo JSON($jarr);
这次成功了,运行结果如下:
{"total":"239","list":[{"code":"001","name":"中国","addr":
php返回json数组元素,php生成返回json对象数组(json支持中文)相关推荐
- 数组的存储与初始化、对象数组、数组作为函数参数
数组的存储 数组在内存中是一组连续的内存单元,也就是说数组元素是连续存储的.数组名是数组所占内存的首地址. 一维数组是按照下标的顺序存储的,而对多维数组就复杂些,以一定的约定顺序将多维数组存储在连续的 ...
- 不懂就问--Java基本数据类型与数组(定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数)案例分析
首先要知道java中的数组是线性排列的 其次要知道数组的初始标度为0 例如定义了一个二维数组 a[1][2],则数组详细为 [0][0]: [0][1]: [0][2]: [1][0]: [1][1] ...
- matlab数组元素的比较大小排序,MATLAB数组元素的排序
MATLAB sort() 函数用来对数组元素进行排序,它有以下几种常见的用法: B = sort(A) %使用默认规则对数组排序 B = sort(A, dim) %dim指定排序的维度 B = ...
- python生成随机数组_python3.x 生成3维随机数组实例
python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...
- python添加数组元素_Python列表附录–如何向数组添加元素,并附带示例说明
python添加数组元素 欢迎 (Welcome) Hi! If you want to learn how to use the append() method, then this article ...
- java数组元素的排序_java学习之数组元素排序,冒泡排序和选择排序
java学习之数组元素排序 选择排序 *返回值类型 void *参数列表 int[] arr * 分析:选择排序 * 第一次arr[0]与arr[1-4]比较,总共比较4次 * 第二次arr[1]与a ...
- python统计数组元素个数_统计二维数组里元素的个数
记录一下一个问题的解决,里面涉及几个函数的用法,当作复习啦. 先说明一下问题.数据表里面的字段 content 存储了一个以逗号分割的字符串,最大有20个数,最大数字为40.比如3,24,33,40类 ...
- php删除二维数组元素_php怎样删除二维数组中的元素
php怎样删除二维数组中的元素 发布时间:2020-11-03 10:22:40 来源:亿速云 阅读:68 作者:小新 这篇文章主要介绍了php怎样删除二维数组中的元素,具有一定借鉴价值,需要的朋友可 ...
- php数组元素转字符串,php怎么把数组转成字符串?
在php中,可以使用implode()函数来把数组转成字符串,它可以将一个一维数组转化为字符串:语法格式为"implode(array)",会返回一个由array数组元素组合成的字 ...
最新文章
- 关于亿级账户数据迁移,你应该试试这种方法...
- ipfs浏览器java实现_IPFS + Ethereum(上篇):JS+IPFS-API存储和获取数据
- WSAAsyncSelect模型
- 使用C#实现Windows下无焦点窗体
- 智能水杯设计方案_智能水杯盖方案开发
- 【转】ABP源码分析十二:本地化
- qmlcanvas绘制3d图形_透视Matplotlib核心功能和工具包 - 绘制3D图形
- NOIP2013/day1/1/转圈游戏
- docker-compose搭建ghost博客系统
- C#静态方法与非静态方法的比较 <转载>
- git学习(八)pull,fetch,merge
- 开发库比较(3) - Mobile Web 开发 - Sencha, jquerymobiel, phonejs, jqtouch, jqmobi
- Mac基础操作:在双显示器设置中将Dock保持在一个屏幕上以防止其移动的方法
- DOM事件学习之兼容中文输入法
- 使用httpclient进行文件下载
- c语言中(char)的用法,c语言中char的用法是什么意思.docx
- 24个关键词致敬科比系列之——凌晨四点
- roslaunch的.launch文件的标签总结
- 不是抽象的, 并且未覆盖Handler中的抽象方法
- 开发者必须mark的一款2D移动游戏开发工具
热门文章
- 电子商务计算机网络的分类可分为,电子商务员基础知识:计算机网络的分类与拓扑结构...
- mysql1000w数据怎么加索引_给mysql一百万条数据的表添加索引
- .NET Core Web API:您需要了解的最少知识(第1部分,共2部分)
- Windows Terminal 0.9 发布
- WiFi 6 目前还不适合个人用户
- 用于CRUD和更多的模型驱动的RESTful API
- 青岛计算机学校分数线,青岛计算机应用与维修专业职业学校收费标准,物联网应用技术中专学校分数线...
- html5画安卓机器人,HTML5用户笔画形状检测机器人
- java 值 继承_java中继承的数值传递引用
- 使用图形界面Anaconda创建新环境的一个小问题