2012-07-06 73 views
1

我想这应该是smple,但我一直坚持这一段时间,所以我需要帮助。我有一个CakePHP程序,我得到下面的数组: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 
       ) 
      ) 
     ) 
    ) 
) 

我要计算每个时间点的totalAucs值的平均值(筛选拜访-1(SCR),Month12,Day0等)分别为总AucFourHour和totalAucTwoHour单独。

所以我要的结果是有些下面的形式:

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

       ) 
      ) 
     ) 
    ), 

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

回答

0

CakePHP具有核心实用程序类,其中一个名为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