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 について、各タイムポイント (Screening Visit-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 ループを使用したくありません。

4

1 に答える 1

0

CakePHP にはコア ユーティリティ クラスがあり、そのうちの 1 つはSetという名前です。セットは配列操作クラスです。次のようにして、アプリのどこからでも呼び出すことができます。

Set::methodNane();

必要なのはextract();orclassicExtract();メソッドです。使い方はかなり簡単です:

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

Cake Bookで他の可能性を確認してください。また、CakePHP 2.2 以降、新しい配列操作クラスHashがあり、より高速になりました。そのバージョンの Set は実際には非推奨ですが、Cake 3.0 まで削除されません

于 2012-07-07T04:15:03.843 に答える