2013-08-26 106 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我想我已經累了。 –