php数组中的多个维度

php数组中的多个维度,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想知道在php数组中是否可能有多个维度。我的数据库中有7列,我需要将数据保存到相应的变量中 代码: $months=Array(); $months=['一月=>数组(),'二月=>数组(),'三月=>数组(),'四月=>数组(),'五月=>数组(),'六月=>数组(),'七月=>数组(),'八月=>数组(),'九月=>数组(), “十月”=>array(),“十一月”=>array(),“十二月”=>array(); //连接到MySQL 如果(!($database=mysql\u con

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

$months=Array();
$months=['一月=>数组(),'二月=>数组(),'三月=>数组(),'四月=>数组(),'五月=>数组(),'六月=>数组(),'七月=>数组(),'八月=>数组(),'九月=>数组(),
“十月”=>array(),“十一月”=>array(),“十二月”=>array();
//连接到MySQL
如果(!($database=mysql\u connect(“localhost”,
“根”,“根”)
die(“无法连接到数据库”);
//开放事件数据库
如果(!mysql_select_db(“事件”,“$database))
die(“无法打开事件数据库”);
foreach($月份为$月份=>$arr){
$result=mysql\u查询(“从发布的\u事件中选择*,其中月份为“$Month”)
或者die('更新数据库时出错,因为:'.mysql_Error());
}
而($row=mysql\u fetch\u array($result,mysql\u ASSOC)){
$months[$month][]=$row['DayNum'];
}
}   
您可以看到,
$months
是一个二维数组,在我的数据库中包含一个月和该月的天数。但在我的数据库中,我有其他东西,如EVENTNAME、STARTTIME、ENDTIME、DESCRIPTION等,我想以如下方式存储它们:

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

首先,对于周期,
$i
是未使用的,
,而
在周期之外。如果需要月-日-小时-事件之类的内容,则需要一个四维数组,如:

    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);
        }
}
foreach($months as$month=>$arr){

对于($i=1;$i),你的数组可以有你想要的任意多个维度。也许你想要
$months[$month][]=$row;
?但是我如何获得存储在like中的信息,例如:五月十二日下午2点?
var_dump($months);
;这将显示你的数组的外观。可能是
$monthrs['一月]]['DayNum']
。我不明白问题是什么。你甚至没有说数据库架构是什么。你的代码格式和缩进都被破坏了,以至于我仍然看不到你在哪里使用
for
循环中的
$I
变量。继续!如果我想添加ENDTIME和DESCRIPTION,还有其他时间吗语句中添加了这些行?您能解释一下“%H”的用法吗?是的,现在就编辑。一次就足够了,您甚至可以删除“for”循环并使事情更有效率。你能给我一个解决方法吗?@F.Haymar d'Ettory因为我想不出任何方法。。thanks@Kay:否:P您应该只对所有行集使用一个查询(删除WHERE语句)。这消除了“foreach”和“for”循环。在“while”循环中,您可以区分月、日和小时(如图所示)从每个查询完成代码(在while中使用“if”或“foreach”)。此时,您正在对数据库执行12*31=372次查询。您可以执行1次或12次查询(这取决于您的代码).不要在SELECT中使用*,而是明确声明您需要的每个字段。其精神是学习和创新,而不是编写代码:p
    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);
        }
}