2010-08-24 56 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