<?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可以强转回去,写在评论里了,还是更一下文吧)

最新文章

  1. SegmentControl 那些令人烦恼的事儿
  2. 【转载】浅谈HTTP中Get与Post的区别
  3. 那些教程没有的php2-对象
  4. Protel 的自动推挤功能
  5. bigdata_hiveserver2报错_thrift
  6. Struts入门学习(一)
  7. vim 配置快捷以使复制可用
  8. JMeterPluginsCMD Command Line Tool
  9. python中ConfigParse模块的用法
  10. Android 推送和统计最优轮循(心跳策略)探究实践
  11. Android群英传笔记——第九章:Android系统信息和安全机制
  12. Windows下建立FTP服务器站点
  13. PHP 点阵5*7字体
  14. Echars使用
  15. java学习之—使用栈实现字符串数字四则运算
  16. Mac 启动或者禁用翻盖自动开关机
  17. python3 sort
  18. 问题 B: 【例9.3】求最长不下降序列(基础dp)
  19. 织梦任意页面调用{dede:field.content/}的方法
  20. 给Elasticsearch 5.2.2 设置用户权限 how to setting security for elasticsearch on windows

热门文章

  1. torch.nn.Conv2d()使用
  2. Most simple basic of internet programming based on two different machines sharing the same local net
  3. SpringBoot启动流程分析
  4. 操作数据库的SqlHelper类
  5. cf 762D. Maximum path
  6. enlipse 快捷键
  7. 08 SSM整合案例(企业权限管理系统):08.权限控制
  8. js模式-观察者模式
  9. pytorch随笔
  10. 51nod 1435:位数阶乘