我想知道在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;所有的事件。 请帮助,谢谢。
答案 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及更新版本中已弃用。