2010-08-24 102 views
4

我有相當大的遞歸數組和混合數字和字符串鍵。遞歸陣列密鑰替換

哪個是用字符串鍵替換數字鍵的最快方法(每個數字前綴爲item_)?

例如。

array('key_1' => 'val1', 2 => array(3 => 'val3')); 

array('key_1' => 'val1', 'item_2' => array('item_3' => 'val3')); 

我想要的物品的順序保持不變。

回答

5
function replace_numeric_keys(&$array) { 
    $result = array(); 
    foreach ($array as $key => $value) { 
     if (is_int($key)) $key = "item_$key"; 
     if (is_array($value)) $value = replace_numeric_keys($value); 
     $result[$key] = $value; 
    } 
    return $result; 
} 
+0

+1這幾乎是我會做的...... – ircmaxell 2010-08-24 19:34:20

+0

和使用尾遞歸相同的是? – takeshin 2010-08-24 19:39:58

+0

@takeshin遞歸調用在循環中。 – 2010-08-24 19:59:48