php – 为什么unset()改变了json_encode格式化字符串的方式?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 为什么unset()改变了json_encode格式化字符串的方式?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1117字,纯文字阅读大概需要2分钟。
内容图文
![php – 为什么unset()改变了json_encode格式化字符串的方式?](/upload/InfoBanner/zyjiaocheng/750/a02366c86292406c804687e6362fa2a8.jpg)
我今天发现了一些有趣的东西,使用了unset()和json_decode / json_encode.这是代码:
echo "<h3>1) array as string</h3>";
$sa = '["item1","item2","item3"]';
var_dump($sa);
echo "<h3>2) array as string decoded</h3>";
$sad = json_decode($sa);
var_dump($sad);
echo "<h3>3) array as string decoded, then encoded again. <small>(Note it's the same as the original string)</small></h3>";
$sade = json_encode($sad);
var_dump($sade);
echo "<h3>4) Unset decoded</h3>";
unset($sad[0]);
var_dump($sad);
echo "<h3>5) Encode unset array. <small>(Expecting it to look like original string minus the unset value)</small></h3>";
$ns = json_encode($sad);
var_dump($ns);
echo "<h3>6) Decode Encoded unset array</h3>";
var_dump(json_decode($ns));
结果:
所以我的问题是:为什么unset()会改变json_encode使它成为字符串的方式?我怎样才能获得与原始格式相同的字符串格式?
解决方法:
json不需要包含来自偏移零的连续键序列的键.
从标准枚举数组中取消设置值会在该数组的键序列中留下间隙,它不会以任何方式调整其余的键;所以json需要通过包含键来反映这种差异
如果要将键重置为从偏移0再次连续的序列,那么
unset($sad[0]);
$sad = array_values($sad);
然后json再次编码/解码
内容总结
以上是互联网集市为您收集整理的php – 为什么unset()改变了json_encode格式化字符串的方式?全部内容,希望文章能够帮你解决php – 为什么unset()改变了json_encode格式化字符串的方式?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。