我有一张这样的桌子;
**Year** **Month**
2012 Jan
2012 Mar
2012 Apr
2013 Dec
2013 Nov
我正在尝试从此表创建一个类似于下面的数组;
Array
(
[2012] => Array(
Jan, Mar, Apr),
[2013] => Array(
Dec, Nov)
);
到目前为止,我尝试了这段代码,但没有得到我想要的内容,
while ($row = mysql_fetch_array($result)){
$new_array[] = array(
'year' => $row['year'],
'month' => $row['month'],
);
}
答案 0 :(得分:1)
试试这个
while ($row = mysql_fetch_array($result)){
$new_array[$row['year']][] = $row['month'];
}
答案 1 :(得分:1)
更好的解决方案是使用MySQL的GROUP_CONCAT
和GROUP
来创建每年一行的结果,然后使用PHP的explode
来分割GROUP_CONCAT
为数组赋值:
$query = mysql_query("SELECT `year`, GROUP_CONCAT(`month`) AS `months` FROM table GROUP BY `year`");
$new_array = array();
while ($row = mysql_fetch_array($result)) {
$new_array[$row['year']] = explode(',', $row['months']);
}
答案 2 :(得分:1)
$new_array=array();
while ($row = mysql_fetch_array($result)){
if(!isset($new_array[$row['year']])
$new_array[$row['year']]=array();
$new_array[$row['year']] = array_push($new_array[$row['year']],$row['month']);
}
答案 3 :(得分:0)
将while
循环更改为:
while ($row = mysql_fetch_array($result)){
$new_array[$row['year']][] = $row['month'];
}
答案 4 :(得分:0)
请尝试以下行 在循环外部创建数组。
$newArray=array();
while($row=mysql_fetch_array($(result))
$newArray[$row['year']] = $row['month'];