递归数组键替换

4

我有一个非常大的递归数组,其中混合了数字和字符串键。

最快的方法是用字符串键替换数字键(在每个数字前面加上前缀item_)?

例如:

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

为了

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

我希望物品的顺序保持不变。

1个回答

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;
}

使用尾递归的话会是什么? - takeshin
@takeshin 递归调用在循环内部。 - Josh Lee
我不确定你能使用尾递归,因为你正在修改键,因此需要对递归调用的结果进行处理(如果只是值,那就很容易了)。如果我错了,请随意纠正我... - ircmaxell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接