[英]two-dimensional arrays in php
好的,這是我的代碼:
$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'];
}
}
我不知道您能否在這里得到我想做的事情,但我還是會解釋。 我正在嘗試訪問我的數據庫並存儲與它們各自月份對應的日期,並將它們存儲在數組中,但是它不起作用:/
我是這個二維數組的新手,所以我不知道我的語法是否錯誤,或者我想實現的目標是不可能的。 感謝您的幫助。
您的月陣列是一個關聯數組,字符串作為鍵,因此您可以使用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 />';
}
}
上面的代碼將簡單地回顯月份名稱,然后是其下方的所有日期,並在下個月重復。
$ months [$ i]將以“ Array”結尾,因為它是一個數組
要獲得月份名稱,您應該輸入:
$ month_names = array_keys($ months);
在$ months變量之后
然后用它
$ result = mysql_query(“ SELECT * FROM posted_events WHERE Month_ ='$ month_names [$ i]'”)
歡呼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.