我有这样的代码,初始化配置
$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));
答案 0 :(得分:1)
您也可以使用此功能
<?php
function arrayToObject($array) {
if(!is_array($array)) {
return $array;
}
$object = new stdClass();
if (is_array($array) && count($array) > 0) {
foreach ($array as $name=>$value) {
$name = strtolower(trim($name));
if (!empty($name)) {
$object->$name = arrayToObject($value);
}
}
return $object;
}
else {
return FALSE;
}
}
?>
答案 1 :(得分:0)
我决定使用此功能
function object($array) {
$object = new stdClass();
foreach ($array as $k => $v) {
$object->$k = $v;
}
return $object;
}
并为assoc arrays
显式调用它$this->config = object(array(
'users' => array(
object(array(
'name' => 'admin',
'password' => $password
))
),
'tokens' => array(),
'sessions' => array(),
));
编辑递归代码
function is_assoc($array) {
if (!is_array($array)) {
return false;
} else {
$keys = array_keys($array);
return !is_numeric($keys[0]);
}
}
function object($array) {
if (is_assoc($array)) {
$object = new stdClass();
foreach ($array as $k => $v) {
$object->$k = object($v);
}
return $object;
} else {
return $array;
}
}