1

好的,这是我的代码:

$months = Array();

$months = ['January'=>array(), 'February'=>array(), 'March'=>array(), 'April'=>array(), 'May'=>array(), 'June'=>array(), 'July'=>array(), 'August'=>array(), 'September'=>array(), 
                        'October'=>array(), 'November'=>array(), 'December'=>array() ]; 
// Connect to MySQL
if ( !( $database = mysql_connect( "localhost", "root", "" ) ) )                      
      die( "Could not connect to database </body></html>" );

// open Events database
if ( !mysql_select_db( "Events", $database ) )
      die( "Could not open Events database </body></html>" );

for($i = 0; $i < 12; $i++) {

    $result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$months[$i]' ") 
                    or die ('Error updating database because: '.mysql_error());

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $months[$i] =  $row['DayNum']; 
    }


}

我不知道您是否可以在这里得到我想要做的事情,但无论如何我都会解释。我正在尝试访问我的数据库并存储与它们各自的月份相对应的日期并将它们存储在一个数组中,但它不起作用:/

我是这个二维数组的新手,所以我不知道我的语法是错误的还是我想要实现的目标是不可能的。谢谢你们的帮助。

4

2 回答 2

1

您的months数组是一个以字符串为键的关联数组,因此您可以使用foreach它来迭代它而不是incremental for。还要记住附加到数组而不是在每次迭代时覆盖它。

foreach($months as $month => $arr) {

    $result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$month' ") 
                    or die ('Error updating database because: '.mysql_error());

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $months[$month][] =  $row['DayNum']; 
        //             ^^ appending not overwriting
    }
}

旁注:

  • mysql_*已弃用,我建议升级到 PDO 或 MySQLi。
  • or die语法是不可取的,因为当您转移到生产环境时很难更改它。像trigger_error()这样默默地写入错误日志的东西会更好。

编辑:输出数组中的日期:

foreach($months as $month => $arr)
{
    echo $month . '<br />';
    foreach($arr as $day)
    {
        echo $day . '<br />';
    }
}

以上将简单地回显月份名称,然后是其下方的所有日期,并在下个月重复。

于 2013-08-08T18:34:43.087 回答
1

$months[$i] 最终将作为“数组”,因为它是一个数组

要获取您应该输入的月份名称:

$month_names = array_keys($months);

在 $months 变量之后

然后使用它

$result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$month_names[$i]'")

干杯:)

于 2013-08-08T18:35:11.193 回答