关于PHP索引数组unset某key后json_encode相关问题踩坑记录
2024-09-05 03:49:24
<?php $a = [1,2,3];
var_dump(json_encode($a)); #string(7) "[1,2,3]" unset($a[0]);
var_dump(json_encode($a)); #string(13) "{"1":2,"2":3}"
$b = [1,2,3];
var_dump(json_encode($b)); #string(7) "[1,2,3]" unset($b[2]);
var_dump(json_encode($b)); #string(5) "[1,2]"
unset()这个函数经常用,但是一直忽略了一个重要问题:
索引数组unset的如果不是数组最后一位的key,也就是说索引顺序0,1,2会被unset成0,2 或者 1,2 这种情况,虽然打印数组还是array,但是已经被转成关联数组了。
另外看了下php json_encode函数的源码。关联数组json_encode的时候可以通过传参,强制输出成object的形式(JSON_FORCE_OBJECT)。
比如json_encode([1,2,3], JSON_FORCE_OBJECT) => "{"0":1,"1":2,"2":3}"。其他特殊需求的转换格式参考php文档吧。
以后还是慎用unset,处理业务逻辑最好还是用赋值新数组代替吧。(后来想到用一下array_values可以强转回去,写在评论里了,还是更一下文吧)
最新文章
- SegmentControl 那些令人烦恼的事儿
- 【转载】浅谈HTTP中Get与Post的区别
- 那些教程没有的php2-对象
- Protel 的自动推挤功能
- bigdata_hiveserver2报错_thrift
- Struts入门学习(一)
- vim 配置快捷以使复制可用
- JMeterPluginsCMD Command Line Tool
- python中ConfigParse模块的用法
- Android 推送和统计最优轮循(心跳策略)探究实践
- Android群英传笔记——第九章:Android系统信息和安全机制
- Windows下建立FTP服务器站点
- PHP 点阵5*7字体
- Echars使用
- java学习之—使用栈实现字符串数字四则运算
- Mac 启动或者禁用翻盖自动开关机
- python3 sort
- 问题 B: 【例9.3】求最长不下降序列(基础dp)
- 织梦任意页面调用{dede:field.content/}的方法
- 给Elasticsearch 5.2.2 设置用户权限 how to setting security for elasticsearch on windows