php数组中的多个维度

时间:2013-08-20 14:33:38

标签: php arrays multidimensional-array

我想知道在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 ETC ......我希望以这样的方式存储它们:

5月13日中午12点有以下事件=&gt;所有的事件。 请帮助,谢谢。

1 个答案:

答案 0 :(得分: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数据类型。如果数据类型为TIME,则可以用substr($row['STARTTIME'],0,2)替换它。

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