首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php序列化空关联数组

php序列化空关联数组
EN

Stack Overflow用户
提问于 2014-01-01 20:27:45
回答 4查看 6.1K关注 0票数 3

我想转储一个关联数组来使用php文件。有时结果可以是空的,在这种情况下,我希望文件的内容完全是:{},这样我就可以以相同的方式处理所有文件。但是,我只能在php中初始化一个简单的数组,因此文件中的输出总是这样:我已经尝试将一个虚拟条目添加到关联数组中,然后再次删除该条目,以便数组为空,但又是文件中的输出。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-01 20:30:14

在编码前将其转换为对象:

代码语言:javascript
复制
json_encode((object) $array);
票数 3
EN

Stack Overflow用户

发布于 2014-01-01 20:45:19

json_encode函数有一个选项,它可以将数组强制放入上下文始终合适的对象--,即关联数组,但这也包括空数组,例如:

代码语言:javascript
复制
$array = array(
    'foo' => array(),
    'bar' => array()
);

echo json_encode($array, JSON_FORCE_OBJECT);  // {"foo":{},"bar":{}}
票数 3
EN

Stack Overflow用户

发布于 2020-11-24 14:52:13

另一个解决方法是在初始化变量时使用ArrayObject而不是[]

下面说明了这个问题。当关联数组为空时,它被编码为'[]'

代码语言:javascript
复制
$object = [];
echo json_encode($object); // you get '[]'

$object['hello'] = 'world';
echo json_encode($object); // you get '{hello: "world"}'

相反,将所有内容保持不变,但是在声明$object时,使用ArrayObject

代码语言:javascript
复制
$object = new ArrayObject;
echo json_encode($object); // you get '{}'

$object['hello'] = 'world';
echo json_encode($object); // you get '{hello: "world"}'

这是一个很好的选择,因为使用(object) []可以将变量转换为stdClass,这意味着您必须使用$variable->property访问属性。但是,如果您的所有现有代码都是使用$variable['property']编写的,那么使用(object) []意味着您必须更改所有这些代码,而您可以只使用new ArrayObject

链接到自ArrayObject以来可用的PHP5

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

https://stackoverflow.com/questions/20872914

复制
相关文章

相似问题

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