Моя цель — прочитать комплекс SQLite база данных с PHP , и создать JSON которая представляет базу данных в соответствии с определенными правилами
Для этого я решил использовать StdClass () учебный класс
проблема : когда я звоню Функция TEST () блок3 не добавлен
Тестовый код (я попытался представить ситуацию в лучшем случае, конечно, здесь я не использую базу данных и 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, но я хотел бы разделить различные процессы
Переменная, которую вы отправляете в функцию TEST, не является объектом. Это массив.
Сделайте var_dump для $ c внутри функции TEST, и вы получите:
массив (4) {
[ «Sxsxs»] =>
string (4) «test» [«98u98u»] =>
string (4) «test» [«jhjh»] =>
string (4) «test» [«oiuoiu»] =>
string (4) «test»}
Вы не можете добавлять переменные с помощью оператора -> в массив.
Возможно, это то, что вы пытались достичь:
$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";
TEST($OBJ);
}function TEST($c){
$c->block3 = array();
}echo json_encode($OBJ);
выход:
{ «block1»: [{ «prop1»: «тест», «prop2»: «тест», «prop3»: «тест», «prop4»: «тест»}], «block2»: [{ «sxsxs» : «тест», «98u98u»: «тест», «jhjh»: «тест», «oiuoiu»: «тест»}, { «sxsxs»: «тест», «98u98u»: «тест», «jhjh» : «тест», «oiuoiu»: «тест»}, { «sxsxs»: «тест», «98u98u»: «тест», «jhjh»: «тест», «oiuoiu»: «тест»}],» block3″ : []}
Других решений пока нет …