php中的二维数组

时间:2013-08-08 18:12:23

标签: php arrays multidimensional-array

好的,这是我的代码:

$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']; 
    }


}

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

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

2 个答案:

答案 0 :(得分:1)

您的months数组是一个关联数组,其中字符串作为键,因此您可以使用foreach迭代它而不是增量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 />';
    }
}

以上内容将简单地显示月份名称,然后是下面的所有日期,并重复下个月。

答案 1 :(得分:1)

$ months [$ i]将以“Array”结尾,因为它是一个数组

获取您应该填写的月份名称:

$ month_names = array_keys($ months);

<$> $ month变量之后

然后使用它

$ result = mysql_query(“SELECT * FROM posting_events WHERE Month_ ='$ month_names [$ i]'”)

欢呼:)