2010-09-12 147 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']);