【发布时间】:2012-08-25 17:47:50
【问题描述】:
我有这样的代码,初始化配置
$this->config = array(
'users' => array(
array('name' => 'admin',
'password' => $password
)
),
'tokens' => array(),
'sessions' => array(),
);
我正在使用 json_encode($this->config) 保存到文件中,然后我使用
json_decode(file_get_contents('file.json'));
它创建嵌套对象,我希望在初始化和配置时拥有这个嵌套对象,除了这个之外,还有其他方法可以创建这个嵌套对象吗?
$this->config = json_decode(json_encode($this->config));
【问题讨论】:
-
您希望您的数组成为一个对象,或者更好地成为嵌套对象的集合?
-
@moonwave99 是的,assoc 数组
array('foo' => 'bar')的 json_encode 返回{"foo": "bar"},当您使用json_decode('{"foo": "bar"}')时它会成为一个对象,因此您可以通过$array['foo']而不是$array['foo']访问它 - json_decode 创建实例stdClass -
无论如何,为什么不直接第一次按对象存储数据,而不传递关联数组?
-
因为 php 没有在 javascript 中创建像 JSON 这样的对象的语法,我需要使用像
$this->config = new stdClass(); $admin = new stdClass(); $admin->user = 'admin'; $admin->password = $password; $this->config->users = array($admin); ...这样的东西,我更喜欢一种表达方式。我发布解决方案。 -
但是php有类!只需定义一个
User类并提供一个构造函数:你会得到类似new User('admin', $password)的东西。