Reputation: 193
i want to generate json in this format
{
"name": "item1",
"description": "mydescript1"
},
{
"name": "item2",
"description": "mydescript2"
}
i have done this so far
for ($i = 0; $i<sizeof($name_); $i++){
$ToSend_Json["name"] = $name_[$i];
$ToSend_Json["description"] = $description_[$i];
}
echo (json_encode($ToSend_Json));
the output i get for this is the last json which in this case is
{
"name": "item2",
"description": "mydescript2"
}
what will be the correct way to do this
Upvotes: 1
Views: 78
Reputation: 866
You're overwriting the values at each iteration of the loop. You should use an array for each iteration.
$json_array = [];
for ($i = 0; $i < count($name_); $i++){
$ToSend_Json["name"] = $name_[$i];
$ToSend_Json["description"] = $description_[$i];
$json_array[] = $ToSend_Json;
}
echo json_encode($json_array);
Alternatively, you could use a foreach which is a better method for iterating a loop:
$json_array = [];
foreach ($name_ as $i => $name) {
$ToSend_Json["name"] = $name;
$ToSend_Json["description"] = $description_[$i];
$json_array[] = $ToSend_Json;
}
echo json_encode($json_array);
Upvotes: 3