辉煌国际网站:关于php unset对json_encode的影响详解
PHP 中有个释放变量的语句叫做unset(从PHP4开始unset已经不再是一个函数了,而是一个语句),本文主要给大家介绍了关于php unset对json_encode影响的相关内容,下面话不多说了,来一起看看详细的介绍吧
先运行一段php代码:
$a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); unset($a[1]); var_dump(json_encode($a));
返回结果如下:
string(28) "["hello world","girl","boy"]"
string(29) "{"0":"hello world","2":"boy"}"
发现对一个数组unset前后,变量的类型变化了,unset前是数组,unset后是对象
这是为什么呢?
看下unset和json_encode究竟是做了什么:
unset() 销毁指定的变量。可以删除数组的指定元素,删除后索引不重排。
json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE
而json_encode转换的对象如果是数组,那么就需要注意下了,看下面的示例:
举例:
$a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); $b = Array('name'=>'hello world', 'age'=>'18', 'gender'=>'man'); var_dump(json_encode($b));
运算结果:
string(28) "["hello world","girl","boy"]"
string(48) "{"name":"hello world","age":"18","gender":"man"}"
发现上面的结果一个是数组,一个是对象。
这是因为$a是索引数组(连续数组),$b则是关联数组(非连续数组)
再看一个官方的例子:
以上输出的结果是:
注意:上面的第二个数组之所以转化后变成对象,是因为键值不是从0开始,这也是非连续数组
所以对一个连续数组执行unset后,会变成非连续数组,对非连续数组执行json_encode会变成对象。
总结:
php中:
索引数组:是指以数字为键的数组。并且这个键值 是自增的
关联数组:指的是一个键值对应一个值,并且这个键值是不规律的,通常都是我们自己指定的。
索引数组转为json后是数组。而关联数组转为json后是对象
拓展一:
那如果想对连续数组执行json_encode后变成对象可以这样做:
$arr = array( '0'=>'a','1'=>'b','2'=>'c','3'=>'d' ); echo json_encode((object)$arr);
输出结果为:
{"0":"a","1":"b","2":"c","3":"d"}
拓展二:
如何消除unset对json_encode的影响?达到转换结果依然为数组
使用unset时:
foreach ($array as $k => $v) { if (某条件) { unset($array[$k]); } }
优化后:
$tmp = array(); foreach ($array as $k => $v) { if (某条件)) { continue; } $tmp[] = $v; } $array = $tmp;
对优化后的$array进行json_encode就可以完美的转换为数组而不是对象了
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/rumen/yyll/y51197.shtml
必备CSS教程 Essential CSS Tutorials
- • css height
- • css line-height
- • css width
- • css min-width
- • css max-width
- • css min-height
- • css max-height
- • css border
- • css background
- • css float
- • css clear
- • css display
- • css font
- • css text-transform
- • css英文首字母大写
- • css font-variant
- • css font-weight
- • css font-style
- • css text-decoration
- • css 删除线
- • div css 虚线
- • css 注释
- • html 注释
- • css padding
- • css margin
- • css 文本
- • css font-size
- • css font-family
- • css color
- • css text-align
- • css text-indent
- • css 超链接(css a)
- • css 优化压缩
- • css id(css #)
- • css class(css .)
- • css ul li列表
- • css 圆角圆边
- • css 父级子级
- • css 指针概念
- • css cursor
- • css overflow
- • html px em pt网页单位
- • CSS important
- • CSS position
- • css z-index
- • css white-space
- • css img图片
- • css class id
- • css link与@import区别
- • css 选择器
- • css引入html
必备HTML基础教程 Essential HTML Tutorials
- • html img图片标签
- • html em标签(EM强调标签)
- • html strong加粗(strong标签)
- • html B加粗(b加粗标签)
- • strong与B加粗区别
- • h1 h2 h3 h4标签(html标题标签)
- • html A超链接锚文本
- • html注释
- • html head头部标签
- • html title标题标签
- • html meta标签
- • html link标签
- • html i斜体标签
- • html u下划线标签
- • html s删除线标签
- • html换行br标签
- • html p段落标签
- • p标签与br标签区别
- • html div标签元素
- • html span标签
- • html font标签
- • html script标签
- • html px em pt网页单位
- • html ul li列表
- • ol li列表
- • dl dt dd标签组
- • table tr td表格
- • table tr th表格
- • html form表单
- • html form input
- • html form textarea文本区域
- • html select下拉与跳转(Html select)
- • html iframe框架
- • html网页结构
- • htm html shtml区别用法
- • 网页编码charset
- • UTF-8 GBK UTF8 GB2312区别联系
- • 先写html还是先写CSS
- • 显示扩展名
- • html标签大全集合
- • html常用标签
- • 网页源代码是什么
如对文章有任何疑问请提交到DIV CSS论坛,或有任何网页制作CSS问题立即到CSS论坛发贴求解 或 直接DIVCSS5网页顶部搜索遇到DIVCSS疑问。
CSS教程文章修订日期:2018-11-15 10:50 原创:DIVCSS5
本文www.divcss5.com DIVCSS5版权所有。
最新文章NEWS
- • 虚拟主机相关知识
- • DIV CSS加载失败
- • DIV+CSS规范命名大全集合
- • CSS margin属性与用法教程
- • padding_css padding用法详解
- • DIV+CSS中让布局居中_背景图片居中_文字内容居中
- • html与xhtml的区别规范是什么
- • DIV+CSS与TABLE的网页优势何在?
- • 浅谈DIV+CSS设计开发的Xhtml网页对SEO优化的影响
- • 开发DIV+CSS的工具集合
CSS 特效CSS EFFECTS
- 纯DIV+CSS下拉菜单模块模板
- DIV+CSS分页_CSS翻页代码模板
- css form实例 用CSS实现表单form布局实例
- 经典DIV+CSS下拉菜单
- div+css不间断上下滚动模板
- 向上不间断滚动div+css+js模板
相关文章RELATED
- • 澳门棋牌官网:一个因@click.stop引发的bug的解决
- • 澳门银河赌城网站:倔强的程序员
- • 金沙平台:spring boot添加新模块的方法教程
- • 辉煌国际网站:关于php unset对json_encode的影响详解
- • 3u娱乐场:Vue路由器基本使用和配置教程
- • 北京黑彩网:与我一步一步学习判断和选择的语言
- • a澳门星际娱乐:HTML实现移动固定浮动半透明搜索框
- • 大家可以在娱乐城学习赌博游戏的具体打法
- • 娱乐城中有很多适合参与赌博游戏的玩家
- • 在娱乐城提高自己的游戏境界