Dalam gelung foreach dalam PHP, kumpulkan mengikut tarikh dan dapatkan jumlah kiraan baris yang sama
P粉304704653
P粉304704653 2023-09-16 19:05:48
0
1
580

Saya mempunyai array seperti ini

Array
(
    [0] => Array
        (
            [0] => 2023-06-28
            [1] => 5482
        )

    [1] => Array
        (
            [0] => 2023-06-28
            [1] => 316
        )

    [2] => Array
        (
            [0] => 2023-06-28
            [1] => 189
        )

    [3] => Array
        (
            [0] => 2023-06-29
            [1] => 5
        )

    [4] => Array
        (
            [0] => 2023-06-29
            [1] => 0
        )

    [5] => Array
        (
            [0] => 2023-06-30
            [1] => 5788
        )

    [6] => Array
        (
            [0] => 2023-06-30
            [1] => 1266
        )
)

Saya mahu mengumpulkan mengikut tarikh dan menjumlahkan nilai

$output=array();
foreach($array as $values){
    $date = $values[0];
    $output[$d][1]+=$values[1];
}
Hasil

$output ialah

Array
(
    [0] => Array
        (
            [0] => 2023-06-28
            [1] => 5987
        )

    [1] => Array
        (
            [0] => 2023-06-29
            [1] => 5
        )

    [2] => Array
        (
            [0] => 2023-06-30
            [1] => 7054
        )
)

Semuanya baik, tetapi saya perlu mengira purata, bukan menjumlahkan nilai, jadi idea saya adalah untuk mendapatkan jumlah hari yang sama dalam foreach dan kemudian membahagikan jumlah itu dengan jumlah hari yang sama. Sebagai contoh, untuk tarikh 2023-06-28, jumlahnya ialah 5987 dan kuantitinya ialah 3, jadi hasilnya hendaklah 5987/3.

Adakah terdapat cara untuk melakukan ini, atau cara lain untuk mendapatkan purata dalam foreach?

P粉304704653
P粉304704653

membalas semua(1)
P粉807239416
# 构建数组
$output = [];
foreach($array as $values){
    $date = $values[0];
    if(!isset($output[$date])) {
        $output[$date] = ['total' => 0, 'count' => 0];
    }
    $output[$date]['total'] += $values[1];
    $output[$date]['count']++;
}

# 计算总和
foreach($output as $date => $data){
    $output[$date]['average'] = ($data['total'] / $data['count']);
}

print_r($output);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan