关于php的json输出格式的问题
$select = $this->datas->query("select data01 from ds_meters_320114102 ORDER BY id desc limit 24");
$result = $select->result();
$datas = array();
foreach($result as $row){
$datas[] = $row;
}
//var_dump($datas);
echo json_encode($datas);
以上是我查询数据库得出的json,这个json结果输出后是这样的格式:
[{"data01":"20.90"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"}]
可是这个数据不是我想要的,我要把这个json变成这样的格式:
[20.90,20.90,21.00,20.90,21.00,21.00....]
请问如何实现呢?谢谢
回复内容:
$select = $this->datas->query("select data01 from ds_meters_320114102 ORDER BY id desc limit 24");
$result = $select->result();
$datas = array();
foreach($result as $row){
$datas[] = $row;
}
//var_dump($datas);
echo json_encode($datas);
以上是我查询数据库得出的json,这个json结果输出后是这样的格式:
[{"data01":"20.90"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"21.00"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"},{"data01":"20.90"}]
可是这个数据不是我想要的,我要把这个json变成这样的格式:
[20.90,20.90,21.00,20.90,21.00,21.00....]
请问如何实现呢?谢谢
如果是数字索引的数组,那么json_encode()的返回值就是[]括住的字符串;如果是字符串索引的数组,那么json_encode()的返回值就是{}括住的字符串。
所以,解决这个问题,可以尝试:echo json_encode(array_values($datas))
楼上已经可以完美解决楼主的问题了。
解决之余,应该多问问为什么。
- JSON 怎么会这样的?
- 为什么非要用 JSON 而不用 序列化(serialize)?
如果你是带着这种疑问,百度一下问题就可以解决。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。出处
JSON基于两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的编程语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被实现为数组(array),矢量(vector),列表(list),序列(sequence)。出处
它一定是有自己的特点的,会了,那就永远都会了。学习一下吧 JSON 中国 | JSON 中文网
$datas[] = $row[data01];
需要你在上面的datas数组里把键data01去掉。
PHP
foreach($result as $row) { $datas[] = $row['data01'] }
这样就行了, 因为之前的数组里有字符串键data01所以只能生成Js对象 {"data01" : "20.90"}
才能表示键值关系。 你把$datas
换成自然索引的数组就可以了。
json_encode(array_column($datas,'data01'));
tips:php5.5才支持array_column,如果你的php版本低于这个就用上面的foreach循环吧
上一篇: mysql单次插入多少数据会发生丢失现象
推荐阅读
-
关于php查询数据库记录显示的有关问题
-
关于php读取文件的性能问题
-
关于在 win2000 下安装 mysql 的一些问题!_PHP教程
-
七牛云存储 - 小白求助:关于百度ueditor编辑器 php版 文件保存位置的问题
-
如何POST一个JSON格式的数据给Restful服务,jsonrestful_PHP教程
-
关于输出缓冲的讨论(Output buffering)之一_PHP教程
-
site-求教php问题,如何在wordpress主题里输出插件的内容
-
关于在linux中定时执行php文件的有关问题
-
python中json格式数据输出的简单实现方法
-
php用date格式化输出指定范围的时间_PHP教程