1

私は配列を持っています:

Array
(
    [0] => Array
        (
            [id] => 81
            [placed] => 2013-09-19 16:32:53
            [sub_total] => 786
        )

    [1] => Array
        (
            [id] => 80
            [placed] => 2013-09-19 16:32:06
            [sub_total] => 780
        )

    [2] => Array
        (
            [id] => 79
            [placed] => 2013-09-18 17:06:48
            [sub_total] => 786
        )

    [3] => Array
        (
            [id] => 78            
            [placed] => 2013-09-18 17:05:02
            [sub_total] => 756
        )

    [4] => Array
        (
            [id] => 77          
            [placed] => 2013-09-17 17:02:53
            [sub_total] => 786
        )

    [5] => Array
        (
            [id] => 76
            [placed] => 2013-09-16 17:02:53
            [sub_total] => 756
        )
)

このデータを日付別にグループ化し、小計を集計して出力配列を取得することは可能ですか:

 Array
    (
        [0] => Array
            (
                [placed] => 2013-09-19
                [sub_total] => 786 + 780
            )

        [2] => Array
            (
                [placed] => 2013-09-18
                [sub_total] => 786 + 756
            )

        [3] => Array
            (
                [placed] => 2013-09-17 17:02:53
                [sub_total] => 786
            )

        [4] => Array
            (
                [placed] => 2013-09-16 17:02:53
                [sub_total] => 756
            )
    )
4

5 に答える 5

2

クエリ時にそのような配列を持つことができます。何かのようなもの

select date_field_name,other_field from table_name group by Day(date_feild_name);

その後、foreach を使用して毎日のデータを操作できます。

于 2013-09-25T06:03:14.897 に答える
2

サブクエリを使ってみる

     select field_name,DAY(date_field) as date,(select sum(sub_total) where DAY(date_field)=date) as sub_total from table_name group by day(date_field)
于 2013-09-25T06:55:50.430 に答える
2

これもテストしました:http://phpfiddle.org/main/code/rzv-ngp

<?php
Array
(
    '0' => Array
        (
            'id' => '81',
            'placed' => '2013-09-19 16:32:53',
            'sub_total' => '786'
        ),

    '1' => Array
        (
            'id' => '80',
            'placed' => '2013-09-19 16:32:06',
            'sub_total' => '780'
        ),

//...
);

$newarray = array();
foreach ($array as $value){
 $temp = explode(" ", $value['placed']);
 $date = $temp[0];
    $total = (isset($newarray[$date]['sub_total']) ? $newarray[$date]['sub_total'] + $value['sub_total']: $value['sub_total']);
 $newarray[$date] = array('placed' => $date, 'sub_total' => $total);
}

print_r($newarray);

?>
于 2013-09-25T06:13:18.697 に答える
0
Try this code
<?php
$shop = array(array( id => '81', 
                      placed => '2013-09-19',
                      sub_total => '786' 
                    ),
             array( id =>'80', 
                      placed => '2013-09-19',
                      sub_total => '780',
                    ),
              array( id => '79', 
                      placed => '2013-09-18',
                      sub_total => '786' 
                    ),
              array
                        (
                    id => '78',            
                    placed => '2013-09-18',
                    sub_total => '756'
                 ),
            array(
                     id => '77',          
                    placed => '2013-09-17',
                    sub_total => '786'
            ),
            array(
                     id => '76',          
                    placed => '2013-09-16',
                    sub_total => '756'
            )
             );
$result=array();
foreach($shop as $value)
{
    if(!isset($result[$value['placed']]))
    {
        //echo $value['placed'];
        //echo $result[$value['placed']];
        $result[$value['placed']]=array('placed'=>$value['placed'],'sub_total'=>0);


    }
    $result[$value['placed']]['sub_total']+=$value['sub_total'];
}

print_r($result);
//print_r($shop);
?>
于 2013-09-25T07:38:50.730 に答える