【发布时间】:2014-12-16 10:06:34
【问题描述】:
我的目标是用 php 读取一个复杂的 sqlite 数据库,并创建一个 json 代表该数据库按照一定的规则 p>
为此,我决定使用 stdClass() 类
问题:当我调用 TEST() 函数时,block3 没有被添加
测试代码(我尽量代表情况,当然这里我不使用数据库和foreach)
$OBJ = new stdClass();
$OBJ->block1 = array();
$OBJ->block1[0]["prop1"] = "test";
$OBJ->block1[0]["prop2"] = "test";
$OBJ->block1[0]["prop3"] = "test";
$OBJ->block1[0]["prop4"] = "test";
$OBJ->block2 = array();
for($i=0;$i<3;$i++) {
$OBJ->block2[$i]["sxsxs"] = "test";
$OBJ->block2[$i]["98u98u"] = "test";
$OBJ->block2[$i]["jhjh"] = "test";
$OBJ->block2[$i]["oiuoiu"] = "test";
//this WORKS , but i want to do this in the TEST function
//$OBJ->block2[$i]["block3"] = array();
TEST($OBJ->block2[$i]);
}
function TEST($c){
$c["block3"] = array();
}
echo json_encode($OBJ);
这是我想要的,一切都是正确的,但不是block3的添加
{
"block1": [
{
"prop1": "test",
"prop2": "test",
"prop3": "test",
"prop4": "test"
}
],
"block2": [
{
"sxsxs": "test",
"98u98u": "test",
"jhjh": "test",
"oiuoiu": "test"
"block3" : []
},
{
"sxsxs": "test",
"98u98u": "test",
"jhjh": "test",
"oiuoiu": "test"
"block3" : []
},
{
"sxsxs": "test",
"98u98u": "test",
"jhjh": "test",
"oiuoiu": "test"
"block3" : []
}
]
}
我无法使用对类 TEST 的调用,但我想划分各个进程
【问题讨论】:
-
那是因为
$OBJ->block2[$i]不是一个对象,而是一个数组。 -
如果我试过这个 $OBJ->block2[0]["block3"] = array(); ,刚出for,块添加正确
-
$OBJ->block1 是一个数组。 $OBJ->block1[$i] 不是数组
-
我更新了问题,有什么建议吗?谢谢