1

コード:

$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日の2番目のループ実行で、ループは0.001、0.001、0.006、0.006、0.001を示します。2番目のループは、試した最初のループ値を表示していますが、修正できません。28:0.001、0.001、0.006および29:0.006、0.001のような値を表示したいと思います。ありがとう。

4

2 に答える 2

0

あなたの

    while($rev = $queryi->fetch_array())
    {
        $revs[] = $rev;
    }

    while($rev = $queryi->fetch_array())
    {
        $revs[$rev_day][] = $rev;
    }

これにより、後で処理できる構造化配列が得られます。

また

while の前に配列を初期化する

    $revs      = aray();
    while($rev = $queryi->fetch_array())
    {
        $revs[$rev_day][] = $rev;
    }
于 2013-01-29T08:41:48.910 に答える
0

while ループの前に、 をリセットする必要があり$revsます。それ以外の場合は、既に含まれている値にさらに追加するだけです。

foreach のすぐ内側に何かを追加すると$revs = array( );、うまくいくはずです。

于 2013-01-29T08:02:56.913 に答える