对于条件总和值的每个总是递增

问题描述 投票:0回答:1

我的期末课程有一个测试。我做了一些函数,但它停留在值数组之和上。

我从MySQL调用数据

$stmt = $conn->prepare("SELECT r.id,id_penyakit,nama_penyakit,id_puskesmas,nama_puskesmas,created_at FROM riwayat r WHERE id_puskesmas = :id_puskesmas");
$stmt->bindValue(':id_puskesmas', $page_cat);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$chartriwayat = $stmt->fetchAll();

它将产生一个像这样的数组

Array
(
    [0] => Array
        (
            [id] => 4
            [id_penyakit] => 1
            [nama_penyakit] => Ayan
            [id_puskesmas] => 5
            [nama_puskesmas] => Puskesmas Melur
            [created_at] => 2024-02-01 10:32:14
        )

    [1] => Array
        (
            [id] => 5
            [id_penyakit] => 2
            [nama_penyakit] => kutilan
            [id_puskesmas] => 5
            [nama_puskesmas] => Puskesmas Melur
            [created_at] => 2024-02-01 10:32:18
        )

    [2] => Array
        (
            [id] => 6
            [id_penyakit] => 3
            [nama_penyakit] => Panuan
            [id_puskesmas] => 5
            [nama_puskesmas] => Puskesmas Melur
            [created_at] => 2024-02-01 10:32:22
        )

    [3] => Array
        (
            [id] => 8
            [id_penyakit] => 3
            [nama_penyakit] => Panuan
            [id_puskesmas] => 5
            [nama_puskesmas] => Puskesmas Melur
            [created_at] => 2024-01-01 10:32:22
        )

    [4] => Array
        (
            [id] => 9
            [id_penyakit] => 3
            [nama_penyakit] => Panuan
            [id_puskesmas] => 5
            [nama_puskesmas] => Puskesmas Melur
            [created_at] => 2024-01-01 11:32:22
        )

)

然后我需要将数据放入新数组中,例如具有相同“id_penyakit”和同一日期月份的总和值

我已经尝试过这段代码并努力创建一个我想要的新数组

$arraychartriwayat1 = $arraychartriwayat2 = $arraychartriwayat = array();

$ArrayFuncmonth = array(
    'January'=>0, 
    'February'=>0, 
    'March'=>0, 
    'April'=>0, 
    'Mei'=>0, 
    'June'=>0, 
    'July'=>0, 
    'August'=>0, 
    'September'=>0, 
    'October'=>0, 
    'November'=>0, 
    'December'=>0
);

foreach ($chartriwayat as $key => $value) {
    $arraychartriwayat1[$value['id_penyakit']] = array(
        "name" => $value['nama_penyakit'],
        "data" => $ArrayFuncmonth,
    );
}

foreach ($chartriwayat as $key => $value) {
    $riwayatmonth = date('F', strtotime($value['created_at']));
    foreach ($ArrayFuncmonth as $ke => $va) {
        $month = $ke;
        if($riwayatmonth==$month){
            if(isset($ArrayFuncmonth[$ke])){
                $ArrayFuncmonth[$ke]+=1;
            }else{
                $ArrayFuncmonth[$ke]+=0;
            }
        }
        $arraychartriwayat[$value['id_penyakit']] = array(
            "name" => $value['nama_penyakit'],
            "data" => $ArrayFuncmonth,
        );
    }
}

这段代码的结果是这样的

Array
(
    [1] => Array
        (
            [name] => Ayan
            [data] => Array
                (
                    [January] => 0
                    [February] => 1
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

    [2] => Array
        (
            [name] => kutilan
            [data] => Array
                (
                    [January] => 0
                    [February] => 2
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

    [3] => Array
        (
            [name] => Panuan
            [data] => Array
                (
                    [January] => 2
                    [February] => 3
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

)

但问题是数据总是相加,而不是每个“id_penyakit”都不同

代码应该增加与月份具有相同“id_penyakit”和相同“created_at”的值

我问的是这样的

Array
(
    [1] => Array
        (
            [name] => Ayan
            [data] => Array
                (
                    [January] => 0
                    [February] => 1
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

    [2] => Array
        (
            [name] => kutilan
            [data] => Array
                (
                    [January] => 0
                    [February] => 1
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

    [3] => Array
        (
            [name] => Panuan
            [data] => Array
                (
                    [January] => 2
                    [February] => 1
                    [March] => 0
                    [April] => 0
                    [Mei] => 0
                    [June] => 0
                    [July] => 0
                    [August] => 0
                    [September] => 0
                    [October] => 0
                    [November] => 0
                    [December] => 0
                )

        )

)

“February”中的数据必须为 1,因为 $chartriwayat 中显示 ID“3”的 penyakit“Panuan”

请帮助我完成我的期末课程测试。

php loops foreach
1个回答
0
投票

数组 ( [1] => 数组 ( [姓名] => 阿扬 [数据] => 数组 ( [一月] => 0 [二月] => 1 [三月] => 0 [四月] => 0 [五月] => 0 [六月] => 0 [七月] => 0 [八月] => 0 [九月] => 0 [十月] => 0 [十一月] => 0 [十二月] => 0 )

    )

[2] => Array
    (
        [name] => kutilan
        [data] => Array
            (
                [January] => 0
                [February] => 1
                [March] => 0
                [April] => 0
                [May] => 0
                [June] => 0
                [July] => 0
                [August] => 0
                [September] => 0
                [October] => 0
                [November] => 0
                [December] => 0
            )

    )

[3] => Array
    (
        [name] => Panuan
        [data] => Array
            (
                [January] => 2
                [February] => 1
                [March] => 0
                [April] => 0
                [May] => 0
                [June] => 0
                [July] => 0
                [August] => 0
                [September] => 0
                [October] => 0
                [November] => 0
                [December] => 0
            )

    )

© www.soinside.com 2019 - 2024. All rights reserved.