代码:
$query = $db->query("SELECT day FROM impressions WHERE pub_id = '$pub_id' AND pub_tag = '$pub_tag' AND month = '$month' AND valid = '1' GROUP BY day ASC");
$stat_rev = $query->num_rows;
if($stat_rev > 0) {
while($revenue = $query->fetch_array())
{
$revenues[] = $revenue;
}
foreach($revenues as $revenue)
{
echo $rev_day = $revenue['day'].':';
$queryi = $db->query("SELECT revenue FROM impressions WHERE pub_id = '$pub_id' AND pub_tag = '$pub_tag' AND month = '$month' AND day = '$rev_day' AND valid = '1'");
while($rev = $queryi->fetch_array())
{
$revs[] = $rev;
}
foreach($revs as $rev)
{
//$total_rev = $total_rev + $rev['revenue'];
echo $rev['revenue'].',';
}
$queryi->close();
echo ' - ';
//echo '['''.$revenue['day'].''', '.$total_rev.'],';
$total_rev = 0;
}
}
输出:
28:0.001,0.001,0.006, - 29:0.001,0.001,0.006,0.006,0.001, -
数据库:
28: 0.001
28: 0.001
28: 0.006
29: 0.006
29: 0.001
在第一天为 28 的第一次循环运行期间,循环显示 0.001、0.001、0.006。现在在第二天是 29 的第二个循环运行时,循环显示 0.001、0.001、0.006、0.006、0.001。第二个循环显示我尝试过但无法修复的第一个循环值,我想显示 28:0.001、0.001、0.006 和 29:0.006、0.001 等值。谢谢。
在 while 循环之前,您需要重置 $revs
,否则您只是将更多附加到其中已有的值。
在foreach中添加类似$revs = array( );
的东西应该可以解决问题。
更改您的
while($rev = $queryi->fetch_array())
{
$revs[] = $rev;
}
自
while($rev = $queryi->fetch_array())
{
$revs[$rev_day][] = $rev;
}
这将为您提供一个结构化数组,您可以稍后处理该数组。
或
在
$revs = aray();
while($rev = $queryi->fetch_array())
{
$revs[$rev_day][] = $rev;
}