Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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中从数据库创建嵌套数组_Php_Mysql_Arrays - Fatal编程技术网

在PHP中从数据库创建嵌套数组

在PHP中从数据库创建嵌套数组,php,mysql,arrays,Php,Mysql,Arrays,我的数据库中有一些表,它们之间有不同的关系。现在,我想在PHP中从这些数组创建嵌套数组,以便我的数组结构如下所示: - Parent - id: 1 - name: "ParentName1" - children: - child - cid: 1 - name: "ChildName1" - movies: - Movie - mid: 1

我的数据库中有一些表,它们之间有不同的关系。现在,我想在PHP中从这些数组创建嵌套数组,以便我的数组结构如下所示:

 - Parent
  - id: 1
  - name: "ParentName1"
  - children: 
     - child
         -  cid: 1
         -  name: "ChildName1"
         -  movies: 
              - Movie
                 - mid: 1
                 - name: "MovieName1"
              - Movie
                 - mid: 2
                 - name: "MovieName2"
     - child
         -  cid: 2
         -  name: "ChildName2"
         -  movies: 
              - Movie
                 - mid: 3
                 - name: "MovieName3"
              - Movie
                 - mid: 1
                 - name: "MovieName1"
 - Parent
  - id: 2
  - name: "ParentName2"
  - children: 
     - child
         -  cid: 4
         -  name: "ChildName4"
         -  movies: 
              - Movie
                 - mid: 6
                 - name: "MovieName6"
              - Movie
                 - mid: 7
                 - name: "MovieName7"
      - child
         -  cid: 1
         -  name: "ChildName1"
         -  movies: 
              - Movie
                 - mid: 1
                 - name: "MovieName1"
              - Movie
                 - mid: 2
                 - name: "MovieName2"
我创建了一个查询,它将所有子ID、名称和电影连接到一行中,并用“,”分隔。这适用于ID和名称,但在电影中会变得棘手

SELECT 
        parents.id AS parentId,
        parents.name AS parentName,
        GROUP_CONCAT(children.id) AS childrenIds,
        GROUP_CONCAT(children.name) AS childrenNames,
        GROUP_CONCAT(children.movies) AS childrenMovies
    FROM
        parents
    LEFT JOIN relationTable ON
        relationTable.pid = parent.id
    LEFT JOIN children ON
        children.id = relationTable.child.id
    LEFT JOIN moviesRelatonTable ON
        moviesRelatonTable.personId = children.id
    GROUP BY 
        parents.id
我想我只能查询父母,然后在PHP循环中查询每一个孩子。但我觉得这对表演来说不是很好



有没有更好的方法可以查询这个问题,或者我应该使用PHP中的循环?

如果您总是从数据库中提取完整的列表,您可以在处理一次后将json保存为文件。在每个请求中,检查数据库中的文件save date和last updatedate,如果json文件是最新的,甚至不用麻烦将其全部从数据库中取出,只需使用该文件即可。如果文件不是最新的,请从数据库中创建并再次保存。这将有助于解决性能问题,这样您就不必太担心子查询的性能。您需要使用函数
file\u exists
filemtime

,这是一种树形结构,因此XML可能更有意义。甚至Json。是的,它将被转换为Json。但我需要以某种方式从数据库获取数据。这并不能回答我关于如何从数据库创建嵌套数组的问题。不能直接从数据库创建嵌套数组。数据库只能像Excel文件一样输出行数据。您必须按照建议进行嵌套查询。这只是告诉您如何避免对每个请求进行嵌套查询。