PHP 嵌套each/while

标签 php mysql while-loop

我正在努力理解与 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/

相关文章:

php - 如何在提交表单后保留选择字段中的选定值?

php - 在 centos 6.5 中将 PHP 从 5.5.8 降级到 5.3.3

php - 如何打印所有类(class)的成绩

Ruby - 如何在返回字符串中的所有偶数值时保留空格?

c++ - while 循环完成一个循环但需要很长时间才能开始下一个循环

php - 合并两个 MySQL 表中的数据

php - 使用 Laravel 中集成的 Office365 发送电子邮件

php - 如果页面刷新如何取消保存

MySQL 排除与连接表匹配的记录(行)

Python while 和 for 循环 - 我可以使代码更高效吗?