我想这应该很简陋,但我已经坚持了一段时间,所以我需要帮助。我有一个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循环,因为我希望将来数据会增长。
答案 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。