数组转json后的结果是数组还是对象? (踩坑记录)

最近工作中经常遇到这些问题,因此记录一下~

问题:数组转json,有时是对象,有时是数组?

情况一:

$arr = [1,2,3];//数组下标从0开始的
echo json_encode($arr);     //[1,2,3] 

$arr = [1=>1,2=>2,3=>3];//数组下标不是从0开始
echo json_encode($arr);//{"1":1,"2":2,"3":3}

此时如果需要返回的是数组,可以这么处理

$arr = [1=>1,2=>2,3=>3];
echo json_encode(array_values($arr));//[1,2,3]

情况二:

$arr = [];
$arr[0] = 'xxx';
$arr[1] = 'yyy';
echo json_encode($arr);//["xxx","yyy"] 

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
echo json_encode($arr);//{"1":"yyy","0":"xxx"}

可以看到赋值的下标都是一致的,仅仅是执行顺序变了,造成的结果也不同了

下面是一个朋友说的解决办法

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
$arr = array_values($arr);
echo json_encode($arr);//["yyy","xxx"]

可以看到结果是有问题的,yyy本来的索引是1,结果中是0
我们要的结果的["xxx","yyy"]

这里给出一个解决办法

$arr = [];
$arr[1] = 'yyy';
$arr[0] = 'xxx';
ksort($arr);
echo json_encode($arr);//["xxx","yyy"]

情况三:

$arr = [];
$arr[0] = 'yyy';
$arr[2] = 'xxx';
print_r($arr);
echo json_encode($arr);
/*Array
(
    [0] => yyy
    [2] => xxx
)
{"0":"yyy","2":"xxx"}
*/

情况四:

$arr = [];
echo json_encode($arr);//[]

总结:

数组转json时,如果索引不是0,1,2,… 从0按顺序走的,则返回的json结构是对象;要想返回的是数组,必须严格要求索引从0开始,依次按顺序,中间不能有断开的数字

关于数组转json后的结果是数组还是对象? (踩坑记录)的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/44738.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月27日 00:31
下一篇 2022年6月27日 23:30

相关推荐

  • PHP基础案例二:计算学生年龄

    一、需求分析为了方便、准确、快捷的展示学的年龄,系统通常根据学生的出生日期进行自动计算。下面请利用PHP变量分别保存学生的年月日,并通过PHP中的data函数获取当前年月日,最后计算出学生的年龄。例如:出生年…

    2022年6月23日
    0165
  • PHP下ajax跨域的解决方案之window.name实例分析详解

    本文实例讲述了PHP下ajax跨域的解决方案之window.name。分享给大家供大家参考,具体如下:原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持…

    2022年6月15日
    0159
  • 聊聊php编程用什么软件,三种人学不会编程。

    编程是一种需要逻辑思维和解决问题能力的技能,对于不同的人,学习编程的难度也会有所不同,有些人可能会觉得编程很难,甚至有些“学不会”,只要你有决心,有耐心,有正确的学习方法,你就能够掌握编程。 我们要明确…

    2024年7月4日
    00
  • PHP与数据库性能调优的集成。

    随着互联网技术的飞速发展,数据库是网站开发中必不可少的一部分。而PHP是目前最常用的服务器端语言之一,它的高效性能和便捷的开发方式已经被广泛认可。但是,即使是最流行的技术也有其局限性,数据库性能问题是PH…

    2023年5月21日
    00
  • PHP中的OOP编程实践。

    随着互联网的发展,PHP作为一种非常流行的服务器端编程语言,成为了很多Web开发人员的首选。随着技术的发展和语言本身的改进,越来越多的PHP开发者开始采用面向对象编程(OOP)的方式来进行开发。在本文中,我们将…

    2023年5月28日
    00
  • PHP中使用PDO操作事务的一些小测试

    PHP中使用PDO操作事务的一些小测试关于事务的问题,我们就不多解释了,以后在学习 MySQL 的相关内容时再深入的了解。今天我们主要是对 PDO 中操作事务的一些小测试,或许能发现一些比较好玩的内容。在 MyISAM 上使…

    2023年3月29日
    00
  • 我的PHP学习第二十三天之MySQL基础篇

    MySQL数据库编程的步骤 第一步:连接MySQL服务器 $link = mysql_connect($db_host,$db_user,$db_pwd); 返回值:连接成功返回资源标识符(转成布尔值true),连接失败返回false. 第二步:选择当前数据库 mysql_sele…

    2016年5月16日 MySQL自学教程
    0366
  • PHP与数据库容器的集成。

    随着云计算技术的发展,越来越多的企业开始将应用部署到容器环境中,从而实现了程序的快速交付和部署。PHP作为一种常用的Web开发语言,也在这一趋势下与数据库容器进行集成,为企业带来了更快速和可靠的应用开发体…

    2023年5月21日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息