Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中处理多维数组并发送到json_Php_Arrays_Json_Multidimensional Array - Fatal编程技术网

在php中处理多维数组并发送到json

在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

我有一个带字段的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 = "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);