计算数组中的数据

时间:2013-11-18 09:47:11

标签: php arrays

我有这个数组:

Array
(
[0] => Array
    (
        [0] => Array
            (
                [id] => 1
                [kw] => 45
                [anzahl_betten] => 100
                [zugange_dauerpflege] => 1
                [zugange_kurzzeitpflege] => 1
                [abgange_dauerpflege_sterbefalle] => 1
                [abgange_dauerpflege_auszuge] => 1
                [abgange_kurzzeitpflege] => 1
                [wechsel_kurz_dauer] => 1
                [anzahl_tage] => 1
                [geplante_einzuge] => 5
                [hID] => 9
            )

        [1] => Array
            (
                [id] => 11
                [kw] => 46
                [anzahl_betten] => 100
                [zugange_dauerpflege] => 0
                [zugange_kurzzeitpflege] => 0
                [abgange_dauerpflege_sterbefalle] => 0
                [abgange_dauerpflege_auszuge] => 0
                [abgange_kurzzeitpflege] => 0
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 0
                [geplante_einzuge] => 1
                [hID] => 9
            )

        [2] => Array
            (
                [id] => 12
                [kw] => 47
                [anzahl_betten] => 100
                [zugange_dauerpflege] => 1
                [zugange_kurzzeitpflege] => 1
                [abgange_dauerpflege_sterbefalle] => 0
                [abgange_dauerpflege_auszuge] => 1
                [abgange_kurzzeitpflege] => 0
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 0
                [geplante_einzuge] => 0
                [hID] => 9
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [id] => 19
                [kw] => 45
                [anzahl_betten] => 100
                [zugange_dauerpflege] => 1
                [zugange_kurzzeitpflege] => 0
                [abgange_dauerpflege_sterbefalle] => 1
                [abgange_dauerpflege_auszuge] => 0
                [abgange_kurzzeitpflege] => 1
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 1
                [geplante_einzuge] => 0
                [hID] => 11
            )

        [1] => Array
            (
                [id] => 20
                [kw] => 46
                [anzahl_betten] => 100
                [zugange_dauerpflege] => 0
                [zugange_kurzzeitpflege] => 2
                [abgange_dauerpflege_sterbefalle] => 3
                [abgange_dauerpflege_auszuge] => 0
                [abgange_kurzzeitpflege] => 2
                [wechsel_kurz_dauer] => 3
                [anzahl_tage] => 0
                [geplante_einzuge] => 2
                [hID] => 11
            )

        [2] => Array
            (
                [id] => 21
                [kw] => 47
                [anzahl_betten] => 99
                [zugange_dauerpflege] => 0
                [zugange_kurzzeitpflege] => 0
                [abgange_dauerpflege_sterbefalle] => 1
                [abgange_dauerpflege_auszuge] => 2
                [abgange_kurzzeitpflege] => 0
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 1
                [geplante_einzuge] => 2
                [hID] => 11
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [id] => 22
                [kw] => 45
                [anzahl_betten] => 50
                [zugange_dauerpflege] => 0
                [zugange_kurzzeitpflege] => 0
                [abgange_dauerpflege_sterbefalle] => 0
                [abgange_dauerpflege_auszuge] => 1
                [abgange_kurzzeitpflege] => 1
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 0
                [geplante_einzuge] => 0
                [hID] => 12
            )

        [1] => Array
            (
                [id] => 23
                [kw] => 46
                [anzahl_betten] => 51
                [zugange_dauerpflege] => 0
                [zugange_kurzzeitpflege] => 0
                [abgange_dauerpflege_sterbefalle] => 0
                [abgange_dauerpflege_auszuge] => 0
                [abgange_kurzzeitpflege] => 0
                [wechsel_kurz_dauer] => 0
                [anzahl_tage] => 0
                [geplante_einzuge] => 0
                [hID] => 12
            )

        [2] => Array
            (
                [id] => 24
                [kw] => 47
                [anzahl_betten] => 51
                [zugange_dauerpflege] => 1
                [zugange_kurzzeitpflege] => 1
                [abgange_dauerpflege_sterbefalle] => 1
                [abgange_dauerpflege_auszuge] => 1
                [abgange_kurzzeitpflege] => 1
                [wechsel_kurz_dauer] => 1
                [anzahl_tage] => 1
                [geplante_einzuge] => 1
                [hID] => 12
            )

    )

)

“kw”是周数,“hID”是房子的ID。 我现在想要从每个房子的一个“kw”中添加所有“anzahl_betten”,“zugange_dauerpflege”,... xt。 所以最后我只希望每个kw有一个数组输入(并且所有房屋都是相加的)。 E.g:

Array ( [0] => Array ( [kw] => 45 [anzahl_betten] => 250 [zugange_dauerpflege] => 2 ...) )
        [1] => Array ( [kw] => 46 [anzahl_betten] => 249 [zugange_dauerpflege] => 1 ...) )

我怎么能意识到这一点?

1 个答案:

答案 0 :(得分:0)

$final = array();
foreach($your_array as $index1 => $sub_array1)
{
    foreach($sub_array1 as $index2 => $final_sub_array)
    {
        // I think you don't care about $index1 and $index2 ?
        unset($final_sub_array['id']);     // nothing to do whith this one ?
        $kw = $final_sub_array['kw'];
        unset($final_sub_array['kw']);
        unset($final_sub_array['hID']);    // nothing to do whith this one ?

        // Now, $final_sub_array contains only keys 'anzahl_betten' .. 'geplante_einzuge'
        foreach($final_sub_array as $house => $value)
        {
            if(isset($final[$kw][$house]))
                $final[$kw][$house] += $value;
            else
                $final[$kw][$house] = $value;
        }
    }
}

$ final的键是“kw”,每个“kw”的值是一系列房屋。我没有测试它。可以吗?