-1

我想知道是否可以在 php 数组中有多个维度。我的数据库中有 7 列,我需要将数据存储到相应的变量代码中:

$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>" );

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


    }
}   

所以你可以$months在我的数据库中看到一个包含一个月和该月天数的二维数组。但是在我的数据库中,我还有其他内容,例如 EVENTNAME、STARTTIME、ENDTIME、DESCRIPTION 等……我想以如下方式存储它们:

5 月 13 日中午 12 点有以下活动 => 所有活动。请帮忙,谢谢。

4

1 回答 1

1

首先,您的for周期也有同样的混乱:$i未使用并且while在周期之外。如果你需要像 Month - Day - Hour - Event 这样的东西,你需要一个四维数组,比如:

    foreach($months as $month => $arr) {
        for($i = 1; $i <=31; $i++){ // you can still work around this "for" cycle: it isn't the best option
        $months[$month][$i] = array(); // third dimension
            $result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$month' AND DayNum='$i' ") 
                     or die ('Error updating database because: '.mysql_error());
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $months[$month][$i][strftime('%H',$row['STARTTIME'])] = $row;    // fourth dimension
        }
        mysql_free_result($result);
        }
}

您将获得 ENDTIME 和 DESCRIPTION 作为数组的第四维。您可以找到它们的值,例如$months['January'][13]['12']['DESCRIPTION']$months['January'][13]['12']['ENDTIME']

关于strftime('%H',$row['STARTTIME']):这是一个仅从 $row['STARTTIME'] 获取小时的函数,假设它存储为 TIMESTAMP 数据类型。substr($row['STARTTIME'],0,2)如果数据类型为 TIME ,您可以将其替换为。

我还建议您使用 mysqli 或 PDO 而不是 mysql 客户端,因为它在 PHP 5.5 和更新版本中已被弃用。

于 2013-08-20T14:48:50.773 回答