【问题标题】:MySQL queries to multi-dimensional php arrayMySQL查询多维php数组
【发布时间】:2025-12-23 20:40:12
【问题描述】:

我正在构建一个应用程序,其中我有多个 MySQL 表,我需要从中创建一个多维 php 数组,但我对如何查询它有点困惑。我已经搜索了很多解决方案,但其中许多来自单个数据库表。

该应用程序是一家公司的调度软件,这个特殊部分是为了让他们可以显示客户的姓名和将在客户家中的卡车,以及将在每辆卡车上的材料。

我的目标是让它看起来像这样:

一次总是只有一个客户名称(每天不止一个,但每次只会在循环中列出一个)。不同数量的卡车可以在每项工作中运送不同类型和数量的材料。一些较小的工作只有一辆卡车和一种材料,但较大的工作可能有不止一辆卡车运载不止一种材料类型。上面的图片将被认为是一项更大的工作,多辆卡车运载多种材料。较小的工作看起来相同,但只有客户姓名,并显示“TRUCK 8:”和“MATERIAL 1”(或当天安排的任何卡车及其上的材料)。

这些是我正在使用的表格:

  • job_truck

  • job_truck_material

  • 材料

上面会输出: 日期:2/27/2015

  • 工作:1619(能源部)
  • 卡车 7:材料 1
  • 卡车 60:材料 1
  • 卡车 8:(空)


  • 工作:439(琼斯)

  • 卡车 35:(空)

我首先查询jobs 表(未显示)并返回jobs.idjobs.namejobs.date。当我需要根据日期访问信息时(显然),最终jobs.date 将出现在查询的 WHERE 子句中。我假设下一步是查询job_truck 表...两个表之间的链接是job_truck.idmaterials.job_truck。接下来是通过查询materials.material 并链接到job_truck_material.materialmaterials.idjob_truck_material.material 是材料表的ID)来找出每辆卡车的材料。

我已尝试加入表格,但这样做我只返回每个项目之一,例如:1 份工作、1 份卡车、1 份材料。我确信加入表格可能是要走的路,但这就是我在这里的原因,因为我不确定正确的结构。我也尝试过嵌套循环,但效果也不好。

我真的希望我解释得正确...任何帮助都非常感谢。提前致谢!

【问题讨论】:

    标签: php mysql arrays multidimensional-array


    【解决方案1】:

    尝试查询JOIN 上的所有行,然后迭代以呈现为多维:

    $query = "SELECT *, materials.id AS material_id FROM job_truck JOIN job_truck_material ON job_truck_material.job_truck = job_truck.id JOIN materials ON job_truck_material.material = job_truck_material.id";
    $jobs = array();
    
    foreach ($conn->query($query ) as $row) {
        $job_id = $row['jobid'];
        $truck_id = $row['truck_id'];
        if(empty($jobs[$job_id])) {
            $jobs[$job_id] = array();
        }
        if(empty($jobs[$job_id][$truck_id])) {
            $jobs[$job_id][$truck_id] = array();
        }
        $jobs[$job_id][$truck_id][$row['material_id']] = $row['material'];
    }
    

    【讨论】:

    • 我会试一试,但我相信必须通过多个查询来完成,因为每个数组都有不同的数组长度。我最初尝试加入表格,但它会将每个结果的所有数据放在一行中。我很确定它必须查询作业,然后查询卡车,然后为每辆卡车查询材料。我只是不知道该怎么做。
    • Join 将为每个唯一的 JOIN 返回一个新行。所以这应该没问题。