2

由于缺乏适当的文档,我很难理解“Set::nest”CakePhp 函数。

如果有人能用我的例子概括地解释如何正确使用它,我将不胜感激。

假设我有这棵树:

array(
    (0) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array('date' => '2012-01-01')
    ),
    (1) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array('date' => '2012-01-02')
    ),
    (2) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array('date' => '2012-01-06')
    ),
    (3) => array(
        'Category' => array('name' => 'Cat 2'),
        'Course' => array(
            'name' => 'Course 2'
        ),
        'Day' => array('date' => '2012-01-02')
    ),
)

转化为:

array(
    'Cat 1' => array(
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array(
            array('date' => '2012-01-01'),
            array('date' => '2012-01-02')
        ),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array(
            array('date' => '2012-01-06')
        ),
    ),
    'Cat 2' => array(
        'Courses' => array(
            'name' => 'Course 2'
        ),
        'Day' => array(
            array('date' => '2012-01-03')
        )
    ),
)

如您所见,这是一种双重嵌套,因为“​​类别”可以有多个“课程”行,而“课程”可以有多个“天”。

我可以遍历它并手动完成。

所以第一个问题是:我可以用 Set::nest 来转换它吗?如果可以,怎么做?

4

1 回答 1

0

你所要求的是不可能的。您的数组无效。您需要更改格式以将每个类别作为嵌套数组'cat' => array(array('course 1' => ...), array('course 2' => ...))

print_r(array(
    'Cat 1' => array(
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array(
            array('date' => '2012-01-01'),
            array('date' => '2012-01-02')
        ),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array(
            array('date' => '2012-01-06')
        ),
    ),
    'Cat 2' => array(
        'Courses' => array(
            'name' => 'Course 2'
        ),
        'Day' => array(
            array('date' => '2012-01-03')
        )
    ),
));

输出:

Array
(
    [Cat 1] => Array
        (
            [Course] => Array
                (
                    [name] => Course 3
                )

            [Day] => Array
                (
                    [0] => Array
                        (
                            [date] => 2012-01-06
                        )

                )

        )

    [Cat 2] => Array
        (
            [Courses] => Array
                (
                    [name] => Course 2
                )

            [Day] => Array
                (
                    [0] => Array
                        (
                            [date] => 2012-01-03
                        )

                )

        )

)
于 2012-10-10T18:37:30.290 回答