首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP json_encode作为PHP数组后的对象unset()

PHP json_encode作为PHP数组后的对象unset()
EN

Stack Overflow用户
提问于 2010-10-06 10:28:33
回答 3查看 4.2K关注 0票数 23

在使用unset删除数字数组键之后,我在使用json_encode时遇到了奇怪的行为。下面的代码应该可以清楚地说明问题。我已经在CLI和Apache mod中运行过它:

PHP版本信息:

代码语言:javascript
复制
C:\Users\usr\Desktop>php -v
PHP 5.3.1 (cli) (built: Nov 20 2009 17:26:32)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

代码

代码语言:javascript
复制
<?php

$a = array(
    new stdclass,
    new stdclass,
    new stdclass
);
$a[0]->abc = '123';
$a[1]->jkl = '234';
$a[2]->nmo = '567';

printf("%s\n", json_encode($a));
unset($a[1]);
printf("%s\n", json_encode($a));

程序输出

代码语言:javascript
复制
C:\Users\usr\Desktop>php test.php
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}]
{"0":{"abc":"123"},"2":{"nmo":"567"}}

正如您所看到的,第一次将$a转换为JSON时,它被编码为一个javascript数组。第二次(在unset调用之后),$a被编码为javascript对象。为什么会发生这种情况,我该如何防止呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3869129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档