从具有重复值的 MySQL 结果创建多维嵌套数组 (PHP)

2024-04-16

我目前正在使用 PDO fetchAll() 函数从数据库中提取菜单数据。这样做会将查询结果的每一行放入以下结构的数组中:

Array ( 
        [0] => Array ( 
                       [MenuId] => mmnlinlm08l6r7e8ju53n1f58 
                       [MenuName] => Main Menu 
                       [SectionId] => eq44ip4y7qqexzqd7kjsdwh5p 
                       [SubmenuName] => Salads & Appetizers
                       [ItemName] => Tomato Salad
                       [Description] => Cucumbers, peppers, scallions and cured tuna
                       [Price] => $7.00) 
        [1] => Array ( 
                       [MenuId] => mmnlinlm08l6r7e8ju53n1f58 
                       [MenuName] => Main Menu 
                       [SectionId] => xlkadsj92laada9082lkas 
                       [SubmenuName] => Entrees 
                       [ItemName] => Portabello Carpaccio
                       [Description] => Dried tomatoes, pin nuts, mahon cheese
                       [Prices] => $18.00)
 )                      
                       ...etc.

出于解析原因,我希望数组出现在没有重复值的嵌套结构中:

Array ( 
          [MenuName] => Main Menu
          [MenuId] => mmnlinlm08l6r7e8ju53n1f58 
          [Section] =>  Array ( 
                                [SectionId] => eq44ip4y7qqexzqd7kjsdwh5p 
                                [SubmenuName] => Salads & Appetizers
                                [Items] => Array (
                                                    [ItemName] => Tomato Salad
                                                    [Description] => Cucumbers, peppers, scallions and cured tuna
                                                    [Prices] => Array (
                                                                        [PriceId] => xksjslkajiak1
                                                                        [Price] => $7.00)
                                                  ) 

                               [SectionId] => xlkadsj92laada9082lkas
                               [SubmenuName] => Entrees
                               [Items] => Array (                           
                                                   [ItemName] => Portabello Carpaccio
                                                   [Description] => Dried tomatoes, pin nuts, mahon cheese
                                                   [Prices] => Array (
                                                                        [PriceId => alkadh29189s09
                                                                        [Price] = $8.00)
                                                  )
                               )
)

作为一名一流的程序员,我在最后一天绞尽脑汁试图弄清楚如何创建这个新的多维数组。看起来我可能必须使用几个嵌套的 foreach 语句和引用,但我很难让任何东西发挥作用。

有谁知道我该怎么做?


这看起来像您正在寻找的

$array = array() ;

while ($row = PDO::fetchAll()) // Replace with relevant Information
{
    $section = array();
    $items  = array();
    $prices  = array();

    if(!array_key_exists($row['MenuId'], $array))
    {
        $array[$row['MenuId']] = array();
        $array[$row['MenuId']]['MenuName'] = $row['MenuName'] ;
        $array[$row['MenuId']]['MenuId'] = $row['MenuId'] ;
        $array[$row['MenuId']]['Section'] = array();
    }

    if(!array_key_exists($row['SectionId'], $array[$row['MenuId']]['Section']))
    {
        $array[$row['MenuId']]['Section'][$row['SectionId']] = array();
        $array[$row['MenuId']]['Section'][$row['SectionId']]['SectionId'] = $row['SectionId'] ;
        $array[$row['MenuId']]['Section'][$row['SectionId']]['SubmenuName'] = $row['SubmenuName'] ; 
        $array[$row['MenuId']]['Section'][$row['SectionId']]['Items'] = array() ;

    }

    $items['ItemName'] = $row['ItemName'] ;
    $items['Description'] = $row['Description'] ;

    $prices['PriceId']  = $row['PriceId'] ;
    $prices['Price']  = $row['Price'] ;

    $items['Prices'] = $prices ;
    $section['Items'] = $items ;

    $array[$row['MenuId']]['Section'][$row['SectionId']]['Items'][] = $items ;

}


var_dump($array);

只需进行微小的更改,您就可以实现您想要的效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从具有重复值的 MySQL 结果创建多维嵌套数组 (PHP) 的相关文章

  • 高级自定义字段 – 具有多个输入的自定义字段类型

    我正在尝试为 ACF 创建一个新的字段类型 其中包含多个输入或存储值数组 原因是我希望为一组输入字段提供一些交互性和自定义布局 我按照这个教程http www advancedcustomfields com resources tutor
  • 如何在我的网站中创建全局搜索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在我的网站中创建全局搜索 该网站是内部网站 无法在网上使用 我无法使用 Google 搜索来实现此目的 我的信息全部存储在不同的
  • php 解码 JSON 获取值

    我正在尝试解码 JSON 格式 我要发送的是 id 123 name John surname Smith department 3 我正在通过 Postman 发送带有数据的 POST 如图所示 所以 这是我想要解码的数据 data se
  • 如何抑制输出并检查命令是否成功?

    我正在尝试编写一个 powershell 脚本来测试 MySQL 登录是否成功 检查是否发生错误 我还想抑制命令的所有输出 成功或不成功 这些是我尝试过的事情 mysql u root password mypass e show data
  • Mysql2::错误:字符串值不正确

    我有一个在生产模式下运行的 Rails 应用程序 但是今天当用户尝试保存记录时突然出现此错误 Mysql2 Error Incorrect string value 更多详细信息 来自生产日志 Parameters utf8 gt lt 9
  • Android-数据在微调器中分配,但选择时不显示微调器中的值

    Problem我正在使用 Retrofit 从 mysql 获取一些产品类别 数据即将到来并在微调器中分配 但是当我选择一个项目时 它不会显示 在下拉菜单中 项目已分配 并且 setOnItemSelected 侦听器也正在工作 但所选项目
  • 阿拉伯语的 tcpdf 将字符显示为问号 '?????? ???'

    我想创建一个阿拉伯语 pdf 与我的 ms Execl 格式的文件相同 在 php 中使用 tcpdf 创建 pdf 时 阿拉伯字符显示为 分数 这些字符是从我的 Excel 文件中复制的 htmlcontent2 span color 0
  • 比较 PHP 和 NodeJS 之间的 BCrypt 哈希值

    对于我正在开发的应用程序 nodejs 需要验证 PHP 创建的哈希值 反之亦然 问题是 PHP 中生成的哈希值 通过 Laravel 的Hash类 它只使用 PHP 的password hash函数 在 Node js 中测试时返回 fa
  • 将 Mailjet API v3 包装器集成为 Codeigniter 库

    我怎样才能整合Mailjet API PHP 包装器 https github com mailjet mailjet apiv3 php no composer作为库安装到我的 Codeigniter 安装中 是不是把内容放进去那么简单存
  • Symfony 功能测试失败,但相同的请求在浏览器中有效

    我跟着Symfony 文档 http symfony com doc current book testing html functional tests关于功能测试 以便编写我的第一个测试 但我有一些问题 我通过浏览器得到的响应效果很好
  • 资源 ID #4 PHP MYSQL

    result mysql query SELECT indvsum sum1 indvsum sum2 FROM SELECT SUM Cash AS sum1 SUM Bank AS sum2 FROM players indvsum e
  • Hibernate OneToMany 列表中的重复结果

    我已将 1 N 关系与 OneToMany 列表映射 但当我访问该列表时 由于 OUTER JOIN 结果会重复 映射如下所示 Entity public class Programmer ElementCollection fetch F
  • 致命错误:发送表单时未找到“App\Http\Controllers\Input”类

    我正在尝试发送一封包含来自 Laravel 应用程序的表单的电子邮件 当你点击提交时 它会抛出上述错误 致命错误 找不到类 App Http Controllers Input 不知道为什么 因为我没有 也不知道我需要有一个输入控制器 或者
  • 不可编辑的文本字段

    我是新来的YII 我想知道文本字段是否YII可以设为不可编辑 如果是的话有人可以回答吗 我按照下面的方法 这是行不通的 Use readonly instead http www w3 org TR html401 interact for
  • 如何调试没有错误消息的错误?

    如何调试没有错误消息的错误 当加载 PHP 页面时 我在 Firefox 中收到此错误 The connection to the server was reset while the page was loading 除了看起来是 Apa
  • 作曲家安装不断消耗所有 RAM 内存

    在我正在开发的 Symfony 2 7 项目中 我通过 Composer 1 6 5 使用了很多包 几天后我无法再添加新包或重建composer lock 它总是内存不足 当我尝试添加新包时 我开始注意到这个问题 但问题不在于那个包 因为作
  • 如何选择非“唯一”行

    我有下表 我必须从中获取非唯一行 id idA infos 0 201 1899 1 205 1955 2 207 1955 3 201 1959 我想获取该列的所有行infos 具有相同的idA至少有两行的值 上表的查询输出必须是 inf
  • PHP 5.5中的password_hash函数

    我有以下函数 可以对密码进行哈希处理并将其存储在数据库中 我正在尝试使用 php 5 5 中的password hash 函数 但它给了我奇怪的结果 function hashpass password include includes c
  • 我应该如何处理 Android 应用程序中 http post 的服务器超时和错误代码响应?

    我的 Android 应用程序会向 URL 发送 http 帖子 例如http example com 电子邮件受保护 http example com abc php email abc xyz com因此 Android 应用程序基本上
  • 条件与 eval {php} [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 然后我得到

随机推荐