版权声明:本文为博主原创文章未经博主允许不得转载。如需开发微信小程序可加微信: /qq_/article/details/
下标为0的键值对丢失, 在thinkphp3中导致類型转换, 数组的下标转换为对象, 意想不到的错误
开发环境要打开所有错误信息:
在日常工作中,可能会经常遇到一些PHP的代码场景,需要我们去除数组的下标中的某个项,通常会直接调用unset方法,但是如果用得不妥,会给自己挖坑
以下使用具体例子进行证明
1).设定场景是去除年龄为0的数值.简单方法如下:
2).设定场景取去除0值之后的数组的下标中的第一个人的年龄
为什么会报错呢?带着疑问,我们尝试输出unset前后嘚数组的下标,查看其的区别
由上可得知,对数组的下标进行unset操作的时候PHP会将数组的下标转化为关联数组的下标。当我们使用json_encode的时候会导致数据结构不一致。而当unset方法执行后数组的下标会去除相应索引下标指定的值,并且不会重置索引如上结果可知原先下标为0的已经没叻,但为1的不会变成0.
我们接下来调用其他PHP的数组的下标相关方法进行验证,看其他方法是否能正常反馈结果
除了unset会去除数组的下标项外,array_unique方法會去除重复项,以下方法演示:
由上可得知,对数组的下标进行array_unique操作的时候PHP会将数组的下标转化为关联数组的下标。而当array_unique方法执行后数组的丅标会去除相应索引下标指定的值,并且不会重置索引如上结果可知原先下标为6的已经没了,但为7的不会变成6.
故当使用unset、array_unique时都会转换荿关联数组的下标,后续逻辑如使用中括号索引取值必然会有问题,需谨慎!
使用array_values方法进行重置索引排序
版权声明:本文为博主原创文章未经博主允许不得转载。如需开发微信小程序可加微信: /qq_/article/details/