我正在计算有多少'返回'有价值的' 1'每月。这是我到目前为止所得到的:
$data1y=array();
$data2y=array();
$months_sql = array();
for ($i = 1; $i <= 12; $i++) {
$months_sql[] = date("F", strtotime( date( 'Y-m-01' )." -$i months"));
}
$sql = "SELECT returned, MONTHNAME( date_in) AS date_in
FROM item
WHERE date_in >= NOW() - INTERVAL 1 YEAR";
$query = mysql_query($sql);
foreach($months_sql as $month)
{
while ($row = mysql_fetch_array($query))
{
if($row['date_in'] = $month && $row['returned']=='1')
{
$counter_returned++;
}
$counter_total++;
}
$data1y[] = $counter_returned++;
$data2y[] = $counter_total++;;
}
我想要的是在两个数组中存储每个mont总共有多少条记录,以及每月有多少条记录。
答案 0 :(得分:-1)
你的循环是错误的。你只需要检查你的months_sql数组中的第一个月(11月,我想?)。对于下个月,您将不再需要获取数据库结果。
您需要切换它们,如果您这样做,您的计数器需要确定它们属于哪个月,因为您的数据库数据不会每个月被处理:
while ($row = mysql_fetch_array($query))
{
foreach($months_sql as $month)
{
if($row['date_in'] == $month)
{
if($row['returned']=='1')
{
$data1y[$month]++;
}
$data2y[$month]++;
}
}
}
使用count()
执行此操作的更快捷方式$sql = "SELECT MONTHNAME( date_in) AS date_in, returned, count(*) as count
FROM item
WHERE date_in >= NOW() - INTERVAL 1 YEAR
GROUP BY date_in, returned;";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query))
{
if(in_array($row['date_in'], $months_sql))
{
if($row['returned']=='1')
{
$data1y[$month] = $row['count'];
}
$data2y[$month] += $row['count'];
}
}
在任何一种情况下,如果您希望每月将数据初始化为0,请在数据库查询之前添加:
foreach($months_sql as $month){
$data1y[$month]=0;
$data2y[$month]=0;
}