使用单个表创建多维数组

时间:2014-06-02 09:40:35

标签: php mysql arrays multidimensional-array

我有一张这样的桌子;

**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'],
          );
}

5 个答案:

答案 0 :(得分:1)

试试这个

while ($row = mysql_fetch_array($result)){
          $new_array[$row['year']][] = $row['month'];
}

答案 1 :(得分:1)

更好的解决方案是使用MySQL的GROUP_CONCATGROUP来创建每年一行的结果,然后使用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'];