【问题标题】:display array of dates as 12 month view将日期数组显示为 12 个月视图
【发布时间】:2010-03-09 21:45:29
【问题描述】:

我使用 php/Mysql

我有两个列(日期、现金)的表格,其值如 {7/2001:100$、12/2001:50$、1/2002:30$、5/2002:90$、6/2003: 80$,9/2003:20$ } 我想制作具有列(Jan,Feb,Mar,............Dec)和日期中每一年的行的现金流表数组和表单元格中的现金值,如吹。

如何显示这个数组 {7/2001:100$, 12/2001:50$, 1/2002:30$, 5/2002:90$, 6/2003:80$,9/2003:20$ } 作为打击??????

         |Jan  | Feb | Mar | Apr | May | Jun  | Jul  | Aug | Sep  | Oct | Nov | Dec |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2001    |  0  | 0   | 0   | 0   |  0  |  0   | 100$ |  0  |  0   |  0  |  0  |  50$ |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2002    | 30$ | 0   | 0   | 0   | 90$ |  0   | 0    |  0  |  0   |  0  |  0  |  0   |
--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2003    | 0   | 0   | 0   | 0   |  0  | 80$  |   0  |  0  |  20$ |  0  |  0  |   0  |

好的,这是从数据库中检索行并将其绘制在表格(日期,现金)中的代码,类似于数组的格式

   mysql_connect("localhost","",""); 
   mysql_select_db(""); 
   $var3=$_REQUEST['order_num']; 
   $cashtotal=0; 
   $summat = mysql_query("SELECT * FROM cash_flow WHERE order_num='$var3'"); 
   while ($row = mysql_fetch_assoc($summat)) { 
        print "<tr>"; 
        print "<td>$row[cash_date]</td>"; 
        print "<td>$row[cash]</td>"; 
        print "</tr>"; 
   } 

【问题讨论】:

  • ok 这是从数据库中检索行并将其绘制在表格(日期,现金)中的代码,如数组的格式 mysql_connect("localhost","",""); mysql_select_db(""); $var3=$_REQUEST['order_num']; $现金总额=0; $summat = mysql_query("SELECT * FROM cash_flow WHERE order_num='$var3'"); while ($row = mysql_fetch_assoc($summat)) { print "";打印“$row[cash_date]”;打印“$row[现金]”;打印“”; }

标签: php mysql arrays date


【解决方案1】:
$array = array ("7/2001:100$", "12/2001:50$" , "1/2002:30$" , "5/2002:90$" , "6/2003:80$","9/2003:20$" );

    $prefill = array_fill(1,12,0);
    $years_array = array();

    foreach($array as $value){
        list($date , $amount) = explode(":" , $value);
        list($month , $year) = explode("/" , $date);

        if(!$years_array[$year]) $months_data = $prefill;
        else $months_data = $years_array[$year];

        $months_data[$month] = $amount;
        $years_array[$year] =   $months_data;
    }

    echo "| Jan  | Feb | Mar | Apr | May | Jun  | Jul  | Aug | Sep  | Oct | Nov | Dec | <br>";
    ksort($years_array);
    foreach($years_array as $year => $year_row){
        echo $year." | ";
        echo implode(" | " , $year_row);
        echo "<br>";
    }

这应该会以您想要的格式为您提供数据,当然您需要引入一个表格以使列宽正确。

编辑: 根据提供的数据,通过数据库创建您的数组并将其传递给上述代码,可能是这样的:

$array = array(); 
   while ($row = mysql_fetch_assoc($summat)) { 
        $array[] = $row[cash_date].":".$row[cash];
   } 

当然,您可以改进上述 2 个代码块,但这应该会给您一些想法。

【讨论】: