2012-10-09 50 views
2

由於缺乏適當的文檔,我有困難 瞭解「Set :: nest」CakePhp函數。CakePHP 2中的Set :: nest如何工作?

如果有人能解釋一般 和我的例子如何正確使用它,我將不勝感激。

比方說,我有這樣的樹:

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在所有 之間進行轉換嗎?如果是的話,怎麼辦?

回答

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 
         ) 

       ) 

     ) 

) 
+0

所以,你告訴我,我需要做什麼,我問怎麼辦,對不對? 問題是:「CakePHP 2中的Set :: nest如何工作?」 – Sam

+0

不,我告訴你,你需要的輸出是不可能的。 – dogmatic69