多维数组的计算

时间:2012-05-21 17:52:31

标签: php arrays multidimensional-array

我正在研究一个项目,我无法解决需要在多维数组上进行的计算。快速背景,这是一个酒店基准测试工具,我需要计算市场渗透指数(MPI)。我有一个包含3个主阵列的数组。前两个是正在比较的酒店,最后一个是MPI阵列。

每个数组都包含用户选择的每个月的数组。 THAT数组内部是需要用于计算的数据。 这是一个例子:

Array
(
 [Competitive set] => Array
    (
        [Sep 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-09-01
                        [maxmonth] => 2011-09-01
                        [nrcheck] => 13
                        [data] => 67.6
                    )

            )

        [Oct 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-10-01
                        [maxmonth] => 2011-10-01
                        [nrcheck] => 13
                        [data] => 63.6
                    )

            )

        [Nov 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-11-01
                        [maxmonth] => 2011-11-01
                        [nrcheck] => 13
                        [data] => 59.2
                    )

            )

        [Dec 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-12-01
                        [maxmonth] => 2011-12-01
                        [nrcheck] => 13
                        [data] => 54.6
                    )

            )

    )

[Test] => Array
    (
        [Sep 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-09-01
                        [maxmonth] => 2011-09-01
                        [nrcheck] => 89
                        [data] => 71.5
                    )

            )

        [Oct 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-10-01
                        [maxmonth] => 2011-10-01
                        [nrcheck] => 89
                        [data] => 67.0
                    )

            )

        [Nov 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-11-01
                        [maxmonth] => 2011-11-01
                        [nrcheck] => 91
                        [data] => 63.1
                    )

            )

        [Dec 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-12-01
                        [maxmonth] => 2011-12-01
                        [nrcheck] => 89
                        [data] => 57.5
                    )

            )

    )

[MPI] => Array
    (
        [Sep 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-09-01
                        [maxmonth] => 2011-09-01
                        [nrcheck] => 89
                        [data] => 71.5
                    )

            )

        [Oct 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-10-01
                        [maxmonth] => 2011-10-01
                        [nrcheck] => 89
                        [data] => 67.0
                    )

            )

        [Nov 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-11-01
                        [maxmonth] => 2011-11-01
                        [nrcheck] => 91
                        [data] => 63.1
                    )

            )

        [Dec 11] => Array
            (
                [0] => Array
                    (
                        [minmonth] => 2011-12-01
                        [maxmonth] => 2011-12-01
                        [nrcheck] => 89
                        [data] => 57.5
                    )

            )

    )

这是一个带有var_export的pastebin(建议似乎没有格式化) http://pastebin.com/b8hYM7TW 很抱歉这个巨大的代码块,但它必须是这个大=( 无论哪种方式,目前MPI的“数据”都是错误的。这需要成为第一个数组的数据除以第二个数组的数据并乘以100(百分比)。

“竞争集”和“测试”键是可变的,在我正在使用的范围内不可用,因此无法使用这些静态名称。

我读过有关递归函数但我还没有得到它......

1 个答案:

答案 0 :(得分:0)

你提供的pastebin数组在“Dit hotel”数组中没有任何数据,所以我无法确认这是否有效,但是你去了

foreach ($array['Dit hotel'] as $key => $value) {

    $array['MPI'][$key][0]['data'] = $value[0]['data'] / $array['Test'][$key][0]['data'] * 100;
}

http://codepad.org/m884GMpJ