我正在努力理解与 MySQL 查询相关的 foreach/while 循环的语法。
我正在尝试输出按年份分组的日期列表。我知道我需要一个包含 while 语句的 for every 循环...
对于每个 -> '年份' -> 列出所有日期。
我什至不确定“对于每个”是否需要是“对于每个”(或“一段时间”)......我目前正在使用“一段时间”来获取日期列表。
这是我用来提取未分组列表中的日期的代码,我需要将其作为“foreach”的一部分...
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo [html containing date fields - {$row['year']}{$row['month']}{$row['day']} etc]}
};
我对如何将其包含在外循环(年)中相当满意 - 我只是不确定使外循环作用于“年”字段的语法。
最佳答案
引用IPO principle您应该立即获取所有记录,然后对它们进行分组。这使您的代码保持结构化、可重用且更易于阅读:
//fetch all records
$records = array();
while($tmp = mysql_fetch_array($result, MYSQL_ASSOC)) {
$records[] = $tmp;
}
//group
$finalResult = groupRecordsBy($records, 'month');
function groupRecordsBy($data, $keyToGroupBy) {
$result = array();
foreach($data as $index => $record) {
$result[$record[$keyToGroupBy]][] = $record;
}
return $result;
}
希望您能开始!
PS:你应该看看OOP甚至更多地构建您的代码!您应该看看 PHP 的 MySQLi 或什至更好的 PDO,而不是使用 mysql_* 函数。它们很快就会被标记为已弃用!
关于PHP 嵌套each/while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380660/