2012-10-03 22 views
0

我有一個多維數組這樣多維數組PHP舉動孩子

Array 
(
    [59] => stdClass Object 
     (
      [id] => 59 
      [parent_id] => 0 
      [name] => detalles de los 
      [order] => 1 

     ) 

    [60] => stdClass Object 
     (
      [id] => 60 
      [parent_id] => 0 
      [name] => Fechas varias 
      [order] => 2 

     ) 

    [62] => stdClass Object 
     (
      [id] => 62 
      [parent_id] => 0 
      [name] => seccion de fechas dependientes 
      [order] => 3 

     ) 

    [63] => stdClass Object 
     (
      [id] => 6 
      [parent_id] => 0 
      [name] => tabbbbb 
      [order] => 5 
      [children] => Array 
       (
        [61] => stdClass Object 
         (
          [id] => 61 

          [parent_id] => 63 
          [name] => Números varios 
          [order] => 5 

         ) 

        [70] => stdClass Object 
         (
          [id] => 70 
          [parent_id] => 63 
          [name] => tablas22 
          [order] => 6 

          [children] => Array 
           (
            [58] => stdClass Object 
             (
              [id] => 58 
              [parent_id] => 70 
              [name] => datos demograficos 
              [order] => 4 

             ) 

           ) 

         ) 

       ) 

     ) 

) 

,我想刪除的條目70

[70] => stdClass Object 
         (
          [id] => 70 
          [parent_id] => 63 
          [name] => tablas22 
          [order] => 6 

,但我希望孩子[58]是的孩子[61]和[70]是[61]的孩子

我應該怎麼做?我tryed沒有設置,但它似乎並不奏效

+0

我很困惑,你要移動的條目或刪除呢? –

回答

0
$child58 = $array[63]->children[70]->children[58]; 
unset($array[63]->children[70]->children); 

$child70 = $array[63]->children[70]; 
unset($array[63]->children[70]); 

$array[63]->children[61]->children = array(58 => $child58, 70 => $child70); 
+0

非常感謝你,我知道這很簡單,現在我要做的就是創建一個可以處理這個問題的函數。 – alex

0

你可以試試下面的

unset($array[63]->children[70]); 
0

擺脫70做到這一點:

unset $yourArray[63]['children'][70]; 

你不能輕易改變節點的關鍵,所以你需要克隆它,並取消舊的,即「重新輸入」條目58變成61

$yourArray[61] = $yourArray[58]; 
unset($yourArray[58]); 
0

這個問題有點複雜,因爲你有一個必須移動的數據結構,並且你也有表示數據結構的實際數據,例如,每個stdClass都有一個parent_id屬性,指向某個有用的地方。

更正你的數據結構可能很容易,但是這個結構來自某個地方,你可能會更好地改變這個源代碼。

對於運動只需複製和刪除。

第一招[58]到新的地方:

$array[63]->children[61]->children[58] = $array[63]->children[70]->children[58]; 
unset ($array[63]->children[70]->children[58]); 

再往前70:

$array[63]->children[61]->children[70] = $array[63]->children[70]; 
unset ($array[63]->children[70]);