在php中处理多维数组并发送到json
我有一个带字段的mysql表:在php中处理多维数组并发送到json,php,arrays,json,multidimensional-array,Php,Arrays,Json,Multidimensional Array,我有一个带字段的mysql表: id | building | title | parent 我想通过fullcalendar.io创建时间线日历 我需要创建以下内容: { id: '1', building: '460 Bryant', title: 'Auditorium D', children: [ { id: '2', title: 'Room D1' }, { id: '3', title: 'Room D2' } ] }, etc... 我这样做: $query
id | building | title | parent
我想通过fullcalendar.io创建时间线日历
我需要创建以下内容:
{ id: '1', building: '460 Bryant', title: 'Auditorium D', children: [
{ id: '2', title: 'Room D1' },
{ id: '3', title: 'Room D2' }
] }, etc...
我这样做:
$query = "SELECT * FROM resources ORDER BY id";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
$data[] = array(
'id' => $row['id'],
'building' => $row['building'],
'title' => $row['title']
);
}
我如何向这个数组元素添加“children”,其中所有元素都将与相同的“parent”合并?
谢谢大家! 您可以使用
id
作为数组的键,并使用它在父元素中存储子元素值:
foreach($result as $row)
{
$id = $row['id'] ;
$id_parent = $row['parent'] ;
if ($id_parent)
{
$data[$id_parent]['children'][] = array(
'id' => $id,
'title' => $row['fname']
);
}
else
{
$data[$id] = array(
'id' => $id,
'building' => $row['building'],
'title' => $row['fname']
);
}
}
// reset indices :
$data = array_values($data);
// create the JSON:
echo json_encode($data);