我正在尝试构建一个对象,该对象将基于迭代数组来保存多个对象:
<?php
$final_object = new stdClass();
$array = ['one','two'];
$temp_str = '';
foreach ($array as $value) {
$temp_str .= $value . '->';
}
$temp_str = rtrim($temp_str, '->');
$final_object->$temp_str = 999;
print_r($final_object);
exit;
你可以猜到,解析器会对待' - &gt;'作为字符串文字,而不是PHP对象操作符。
我试图做的是什么?
最后,我想在json_encoding之后构建一个json字符串:{“one”:{“two”:999}}
答案 0 :(得分:2)
您可以在循环期间存储对象的引用,并在结尾处分配值:
$final_object = new stdClass();
$array = ['one','two'];
$ref = $final_object ;
foreach ($array as $value) {
$ref->$value = new stdClass() ;
$ref = &$ref->$value ; // keep reference of last object
}
$ref = 999; // change last reference to your value
print_r($final_object);
输出:
stdClass Object
(
[one] => stdClass Object
(
[two] => 999
)
)
你可以使用数组做同样的事情:
$array = ['one','two'];
$final_object = [];
$ref =& $final_object;
foreach ($array as $value) {
$ref[$value] = [];
$ref =& $ref[$value];
}
$ref=999;
echo json_encode($final_object);
输出:
{"one":{"two":999}}