关于php的json输出格式的问题

php中文网
发布: 2016-06-06 20:33:18
原创
1521人浏览过

 $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变成这样的格式:

立即学习PHP免费学习笔记(深入)”;

[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变成这样的格式:

立即学习PHP免费学习笔记(深入)”;

[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去掉。

PHPforeach($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循环吧

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号