Cakephp使用返回的数组值

时间:2012-07-06 12:46:17

标签: cakephp-2.1

我想这应该很简陋,但我已经坚持了一段时间,所以我需要帮助。我有一个cakephp应用程序,我得到以下数组:

chratSortedMean= array(
    'totalAucFourHour' => array(
        'Screening Visit-1 (scr)' => array(
            'MmttFourthHour' => array(
                'totalAucs' => array(
                    (int) 0 => (float) 0,
                    (int) 1 => (float) 220
                )
            )
        ),
        'Month12' => array(
            'MmttFourthHour' => array(
                'totalAucs' => array(
                    (int) 0 => (float) 263.25,
                    (int) 1 => (float) 16.25
                )
            )
        )
    ),
    'totalAucTwoHour' => array(
        'Day0' => array(
            'MmttSecondHour' => array(
                'totalAucs' => array(
                    (int) 0 => (float) 0,
                    (int) 1 => (float) 112.125
                )
            )
        ),
        'DayD2' => array(
            'MmttSecondHour' => array(
                'totalAucs' => array(
                    (int) 0 => (float) 97.375,
                    (int) 1 => (float) 4.5
                )
            )
        ),
        'Month3' => array(
            'MmttSecondHour' => array(
                'totalAucs' => array(
                    (int) 0 => (float) 8.53125,
                    (int) 1 => (float) 8.75
                )
            )
        )
    )
)

我想分别为totalAucFourHour和totalAucTwoHour计算每个时间点(筛选访问-1(scr),Month12,Day0等)的totalAucs值的平均值。

所以我想要的结果有点以下形式:

'totalAucFourHour' => array(
        'Screening Visit-1 (scr)' => array(
            'MmttFourthHour' => array(
                'totalAucMean' => (float) 110
                )
            )
        ),
                'Month12' => array(
            'MmttFourthHour' => array(
                'totalAucMean' => (float) 139.75

                )
            )
        )
    ),

等等。我不想使用多个for循环,因为我希望将来数据会增长。

1 个答案:

答案 0 :(得分:0)

CakePHP具有Core Utility Classes,其中一个名为Set。 Set是数组操作  类。您可以通过以下方式在应用中的任何位置拨打电话:

Set::methodNane();

您需要的是extract();classicExtract();方法。用法很简单:

$Day0path = '/chratSortedMean/totalAucTwoHour/Day0/MmttSecondHour'
$arrayOfDay0s = Set::extract($Day0path, $data);

检查Cake Book处的其他可能性。此外,由于CakePHP 2.2有一个新的数组操作类Hash,它更快。由于该版本的Set实际上已弃用,但it will not be removed up until Cake 3.0