从数组中的数据计算 [英] Calculate data from an array

查看:108
本文介绍了从数组中的数据计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个数组:

 阵列

[0] =>排列
    (
        [0] =>排列
            (
                [ID] => 1
                [千瓦] => 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] =>五
                [HID] => 9
            )        [1] =>排列
            (
                [ID] => 11
                [千瓦] => 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] =>排列
            (
                [ID] => 12
                [千瓦] => 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] =>排列
    (
        [0] =>排列
            (
                [ID] => 19
                [千瓦] => 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] =>排列
            (
                [ID] => 20
                [千瓦] => 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] =>排列
            (
                [ID] => 21
                [千瓦] => 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] =>排列
    (
        [0] =>排列
            (
                [ID] => 22
                [千瓦] => 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] =>排列
            (
                [ID] => 23
                [千瓦] => 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] =>排列
            (
                [ID] => 24
                [千瓦] => 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
            )    ))

千瓦是周数和藏,是一所房子的ID。
我现在想从每个房子全部添加anzahl_betten,zugange_dauerpflege,... XT从一个千瓦起来。
所以,最后我只想有一个阵列入境每个千瓦(和所有的房子相加)。
例如:

 阵列([0] =>数组([KW] => 45 anzahl_betten] => 250 zugange_dauerpflege] => 2 ...))
        [1] =>阵列([千瓦] => 46 [anzahl_betten] => 249 [zugange_dauerpflege] =→1 ...))

我怎么能认识到这一点?


解决方案

  $最终=阵列();
的foreach($ your_array为$索引1 => $ sub_array1)
{
    的foreach($ sub_array1为$索引2 => $ final_sub_array)
    {
        //我觉得你不关心$索引1和$索引2?
        未设置($ final_sub_array ['身份证']); //无关蒙山这一个?
        $千瓦= $ final_sub_array ['千瓦'];
        未设置($ final_sub_array ['千瓦']);
        未设置($ final_sub_array ['藏']); //无关蒙山这一个?        //现在,$ final_sub_array只包含键'anzahl_betten'..'geplante_einzuge
        的foreach($ final_sub_array为$房子=> $值)
        {
            如果(使用isset($决赛[$千瓦] [$家))
                $最后的[$千瓦] [$房子] + = $价值;
            其他
                $最后的[$千瓦] [$房子] = $价值;
        }
    }
}

$最后的键是千瓦,并且每个KW的值是房屋的阵列。我没有测试它。是否确定?

i have this array:

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" is the week number and "hID" is the ID of a house. I now want to add all "anzahl_betten", "zugange_dauerpflege", ...xt from one "kw" from every house together. So in the end i just want to have one Array-Entry for each kw (and all houses are summed). E.g.:

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

How could i realize this?

解决方案

$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;
        }
    }
}

Keys of $final are the "kw", and values of each "kw" is an array of houses. I did not test it. Is it OK ?

这篇关于从数组中的数据计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆