PHP: работа с stdClass () для создания JSON

Моя цель — прочитать комплекс 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, но я хотел бы разделить различные процессы


0

Решение

Переменная, которую вы отправляете в функцию 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″ : []}

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]