2013-08-26 62 views
1

我有一个数组我试图改变这个数组的一些键,但函数失败的递归数组。多维数组键值替换

可能是什么问题

任何一个可以解决这个问题?

$array = array(
    array(
     'tag' => 'div', 
     'class' => 'lines', 
     array(
      'tag' => 'div', 
      'repeat' => array(
       'tag' => 'div', 
       array(
        'tag' => 'span', 
        'style' => 'margin:10px; padding:10px', 
        'key' => 'title', 
       ), 
       'key' => 'subject', 
      ) 
     ) 
    ) 
); 



function update_recursively($array, $key = '', $value = array()) { 
    //print_r($array); print_r($value); 
    foreach ($array as $k => $v) { 
     if ($k === $key){ 
      $array[$k] = $value; 
     } 
     elseif (is_array($v)) 
      $array[$k] = update_recursively($v); 
    } 
    return $array; 
} 

print_r(update_recursively($array, 'repeat', array('d' => 'a'))); 

回答

1

你忘了2nd3rd参数传递给内部函数调用:

function update_recursively($array, $key = '', $value = array()) { 
    //print_r($array); print_r($value); 
    foreach ($array as $k => $v) { 
     if ($k === $key){ 
      $array[$k] = $value; 
     } elseif (is_array($v)) { 
      $array[$k] = update_recursively($v, $key, $value); // Here 
     } 
    } 
    return $array; 
} 
+0

谢谢你这么多u_mulder我想我已经累了。 –