Php 如何显示这些特定于其包含的数据的记录?
我正在构建一个显示有关报告信息的页面。这些报告包含日期、名称和小说明 到目前为止,我已经能够按时间顺序从数据库中提取所有报告。Print_r()显示以下内容:Php 如何显示这些特定于其包含的数据的记录?,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,我正在构建一个显示有关报告信息的页面。这些报告包含日期、名称和小说明 到目前为止,我已经能够按时间顺序从数据库中提取所有报告。Print_r()显示以下内容: Array ( [year] => 2024 [name] => 2024-05-25_601832524.pdf [date] => 2024-05-25 [description] => tr7 ) Array ( [year] => 2024 [name] => 2024-05-13_177847
Array ( [year] => 2024 [name] => 2024-05-25_601832524.pdf [date] => 2024-05-25 [description] => tr7 )
Array ( [year] => 2024 [name] => 2024-05-13_1778477336.pdf [date] => 2024-05-13 [description] => tr6 )
Array ( [year] => 2024 [name] => 2024-05-22_1352917456.pdf [date] => 2024-05-22 [description] => tr7 )
Array ( [year] => 2022 [name] => 2022-02-19_1728056762.pdf [date] => 2022-02-19 [description] => tr3 )
Array ( [year] => 2022 [name] => 2022-05-19_1307066849.pdf [date] => 2022-05-19 [description] => tr5 )
基本上,我需要按年份(我将显示为标题)分离这些记录,然后遍历给定年份的每条记录,显示记录的数据,然后再转到下一年的标题和记录
不幸的是,无法确定每年的总记录数或记录数。由于这些值将定期变化,因此也不能更改唯一年份的数量。(向数据库添加新报告或删除旧报告时)
我没有发布我尝试过的解决方案,因为每次堆栈中下一条记录的[year]与上一条记录不同时,都会有2天的时间尝试实例化新的$$year[]
编辑:为了澄清,我有一个2D数组,其中包含数据库中所有报告的记录。我需要遍历这个数组,并将每条记录排序到与每条记录的[year]
值相对应的单独数组中
为了避免任何歧义,我举了一个例子:
根据上面显示的记录数组排序,我想对数组进行如下排序:
Years[]= ([0]=>2024[],[1]=> 2022[]);
2022[] =([0]=>([year] => 2022 [name] => 2022-02-19_1728056762.pdf [date] => 2022-02-19 [description] => tr3 ), [1]=>( [year] => 2022 [name] => 2022-05-19_1307066849.pdf [date] => 2022-05-19 [description] => tr5 ));
我将假设一些方面,因为没有提供代码示例 1) 您说过这些结果来自数据库,但在prin_r结果中我看到了多个独立数组,我假设print_r是在循环结构中调用的 2) 您希望按年操作这些记录,并希望保留阵列的所有数据/元素 这可以通过以下代码实现:
$testData = [
[
'year' => 2024,
'name' => '2024-05-25_601832524.pdf',
'date' => '2024-05-25',
'description' => 'tr7'
],
[
'year' => 2023,
'name' => '2024-05-25_601832524.pdf',
'date' => '2024-05-25',
'description' => 'tr7'
],
[
'year' => 2023,
'name' => '2024-05-25_601832524.pdf',
'date' => '2024-05-25',
'description' => 'tr7'
],
[
'year' => 2020,
'name' => 'YoloSwagEasterEgg.pdf',
'date' => '2024-05-25',
'description' => 'tr7'
]
];
$dataseperatedByYear = [];
foreach ($testData as $record) {
$dataseperatedByYear[$record['year']][] = $record;
}
print_r($dataseperatedByYear);
die();
这不会将每个记录单独保存到嵌套数组中,而不是将具有相同年份的所有$record分组吗?它不会将所有记录分组[查看我提到的假设]是否希望每年只有一个名称/说明?否,我希望它存储数组x中包含年份x的所有记录,以及数组y中包含年份y的所有记录,依此类推。