2010-09-12 139 views
1

如何將'fields'數組的所有節點移動到其父數組'113',同時取消設置'fields'?php將節點移動到父數組

[a] => Array 
    (
     [113] => Array 
      (
       [title] => asdfasdfas 
       [alias] => asdfasdfas 
       [fields] => Array 
        (
         [jr_streetaddress] => Array 
          (
           [type] => text 
           [label] => Street Address 
           [data] => asdfasdffsd 
          ) 

         [jr_towncity] => Array 
          (
           [type] => text 
           [label] => Town/City 
           [data] => Nottingham 
          ) 
        ) 
      ) 
    ) 
+0

什麼是這個數組的「根」?你有幾個這樣的子陣列還是你只想爲這個特定的陣列做這個? – 2010-09-12 08:02:14

回答

3

假設你的頂級陣列()是可變$a

foreach($a as $key => $values){ 
    if(isset($values['fields'])) 
    { 
     $a[$key] = array_merge($a[$key], (array) $values['fields']); 
     unset($a[$key]['fields']); 
    } 
} 

或者,如果您不想擊中$a中的每個數組元素,則可以刪除該循環並用$values替換$a[113]$key並使用113

還要注意的領域元素轉換爲數組,僅僅指剛萬一它不是一個與(array) $values['fields']

0

如果你能夠讓這個陣列是這樣的:

[a] => Array 
(
    [113] => Array 
     (
      [title] => asdfasdfas 
      [alias] => asdfasdfas 
      [jr_streetaddress] => Array 
         (
          [type] => text 
          [label] => Street Address 
          [data] => asdfasdffsd 
         ) 

      [jr_towncity] => Array 
         (
          [type] => text 
          [label] => Town/City 
          [data] => Nottingham 
         ) 
     ) 
) 

嘗試使用此代碼:

$array['a'][113]['jr_streetaddress'] = $array['a'][113]['fields']['jr_streetaddress']; 
$array['a'][113]['jr_towncity'] = $array['a'][113]['fields']['jr_towncity']; 
unset($array['a'][113]['fields']);