如何在PHP中重命名数组键?

TK1*_*123 57 php

当我对一个名为$ tags(多维数组)的变量进行var_dump时,我得到了这个:

Array
(
    [0] => Array
        (
            [name] => tabbing
            [url] => tabbing
        )

    [1] => Array
        (
            [name] => tabby ridiman
            [url] => tabby-ridiman
        )

    [2] => Array
        (
            [name] => tables
            [url] => tables
        )

    [3] => Array
        (
            [name] => tabloids
            [url] => tabloids
        )

    [4] => Array
        (
            [name] => taco bell
            [url] => taco-bell
        )

    [5] => Array
        (
            [name] => tacos
            [url] => tacos
        )
)

我想将名为"url"的所有数组键重命名为"value".这样做有什么好办法?

ale*_*lex 131

你可以array_map()用来做.

$tags = array_map(function($tag) {
    return array(
        'name' => $tag['name'],
        'value' => $tag['url']
    );
}, $tags);
Run Code Online (Sandbox Code Playgroud)

  • 太好了!快速说明:闭包(匿名函数)仅在php 5.3.0+中可用 (9认同)
  • 快速说明:您需要使用PHP 5.6或更高版本,否则您运行的是不受支持的php版本,可能会出现安全问题. (7认同)

Roc*_*mat 30

循环,设置新密钥,取消设置旧密钥.

foreach($tags as &$val){
    $val['value'] = $val['url'];
    unset($val['url']);
}
Run Code Online (Sandbox Code Playgroud)


Mr *_*ver 6

foreach ($basearr as &$row)
{
    $row['value'] = $row['url'];
    unset( $row['url'] );
}

unset($row);
Run Code Online (Sandbox Code Playgroud)

  • **警告**:即使在 foreach 循环之后,对 $row 和最后一个数组元素的引用仍然存在。建议通过 unset() 销毁它。否则,您可能会遇到意外行为。参见 https://secure.php.net/manual/en/control-structures.foreach.php、/sf/ask/231518661/、/sf/ask/347847041/ (2认同)

Cha*_*eBE 5

谈到功能PHP,我有一个更通用的答案:

    array_map(function($arr){
        $ret = $arr;
        $ret['value'] = $ret['url'];
        unset($ret['url']);
        return $ret;
    }, $tag);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

递归php重命名键功能:

function replaceKeys($oldKey, $newKey, array $input){
    $return = array(); 
    foreach ($input as $key => $value) {
        if ($key===$oldKey)
            $key = $newKey;

        if (is_array($value))
            $value = replaceKeys( $oldKey, $newKey, $value);

        $return[$key] = $value;
    }
    return $return; 
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个绝妙的解决方案!它会重命名多维数组中任意位置的键。谢谢你,这节省了我几个小时的工作时间。 (2认同)