I have got the final array with blog detail and related multiple comments for blog
JavaScript
x
$prev_blog = 0;
$finalArray = array();
foreach ($blog_details as $student)
{
if ($prev_blog != $student->id)
{
$finalArray['blog'][] = array('bid' => $student->id,
'blogTitle' => $student->blog_title,
'blogImage' => $student->blog_image,
'blogDescription' => $student->blog_description
);
$prev_blog = $student->id;
}
$finalArray[key($finalArray)][] = array('comment ' => $student->comments);
}
$comm=json_encode($finalArray);
print_r($comm);
The result of the above code is as follow
JavaScript
{
"blog":[
{
"bid":4,
"blogTitle":"testing for slug",
"blogImage":"1573222996.jpg",
"blogDescription":"testing for blog slug.for saving blog slug"
},
{
"comment ":"This is very nice blog "
},
{
"comment ":"need to add some more comments "
},
{
"comment ":"Nicely explained "
},
{
"comment ":"Thanks for such a nice blog it is helpful "
}
]
}
But the expected result should look like the following, Comments and blog details should be in the same array
JavaScript
{
"blogDetail":[
{
"blogID":4,
"blogChildGenre":"laravel",
"blogTitle":"laravel 5.6 tutorial",
"blogImage":"laravel.jpg",
"blogDescription":"This blog gives basic info about laravel",
"comments":[
{
"comment":"This is first comment",
},
{
"comment":"This is first comment",
},
{
"comment":"This is first comment",
}
]
}
]
}
Is there a way to give a name for a comment?
Advertisement
Answer
Try this
JavaScript
$finalArray = array();
foreach ($blog_details as $student)
{
if (!isset($finalArray[$student->id]))
{
$finalArray[$student->id] = [
'blogDetail' => []
];
}
if(empty($finalArray[$student->id]['blogDetail'])) {
$finalArray[$student->id]['details'] = [
'bid' => $student->id,
'blogTitle' => $student->blog_title,
'blogImage' => $student->blog_image,
'blogDescription' => $student->blog_description,
'comments' => []
]
}
$finalArray[$student->id]['blogDetail']['comments'][] = [
'comment' => $student->comments
];
}
$comm=json_encode($finalArray);
print_r($comm);