【问题标题】:group array values and loop through [duplicate]对数组值进行分组并循环[重复]
【发布时间】:2023-03-10 07:54:02
【问题描述】:

我有一个 MySQL 表,它存储了与某一年相关的数据

表名:registrations

id   name     year     address    
1    Tom      2011     NY   
2    Peter    2012     NY   
3    harry    2011     NY   
4    Steve    2012     NY   
5    Tommy    2013     NY   
6    Steph    2013     NY   
7    Sean     2011     NY 

我使用下面的查询从表中获取数据

select * from registrations ORDER by year ASC 

在我的PHP 代码中,我使用foreach 循环遍历数组值

问题是我想按年份显示记录,例如

year - 2011
       Name: Tom
       Address: NY

       Name: Harry
       Address: NY

       Name: Sean
       Address: NY

Year - 2012
       Name: Peter
       Address: NY

 ............

谁能告诉我实现这一目标的最佳方法是什么?

【问题讨论】:

  • 您已经按年订购。因此,在您的循环中,只需添加一个检查 -- 如果当前记录的年份与最后一条记录的年份不同,则输出一个新的年份标题部分。
  • 向我们展示你的 php。
  • 就循环逻辑而言密切相关的Q&A
  • @AlexHowansky 谢谢... :) 这解决了问题

标签: php mysql


【解决方案1】:

第一步是按照您希望的分组方式对所有数据进行分组。 $records 变量模拟 mysql 返回的值。最后的循环简单地创建了一个新数组,其中年份作为人民信息的键和子数组。这应该可以很容易地循环并以指定的格式打印出您想要的值。

$records = [
    [
        'id' => 1,
        'name' => 'Tom',
        'year' => 2011,
        'address' => 'NY'
    ],
    [
        'id' => 2,
        'name' => 'Peter',
        'year' => 2012,
        'address' => 'NY'
    ],
    [
        'id' => 3,
        'name' => 'harry',
        'year' => 2011,
        'address' => 'NY'
    ],
    [
        'id' => 4,
        'name' => 'Steve',
        'year' => 2012,
        'address' => 'NY'
    ],
    [
        'id' => 5,
        'name' => 'Tommy',
        'year' => 2013,
        'address' => 'NY'
    ],
    [
        'id' => 6,
        'name' => 'Steph',
        'year' => 2013,
        'address' => 'NY'
    ],
    [
        'id' => 7,
        'name' => 'Sean',
        'year' => 2011,
        'address' => 'NY'
    ],
];


$byYear = [];
foreach ($records as $record) {
    $year = $record['year'];
    $person = ['Name' => $record['name'], 'Address' => $record['address']];
    if (!isset($byYear[$year])) {
        $byYear[$year] = [];
    }
    array_push($byYear[$year], $person);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2018-11-03
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多