替换所有数组键中分隔符之前的前导子字符串

问题描述 投票:0回答:3

我有一个如下所示的数组。

$arr = Array ( [My_name] => Sam [My_location] => United_Kingdom [My_id] => 1 );

我正在尝试更改按键:

  • 来自
    My_name
    My_Location
    My_id
  • Your_name
    Your_Location
    Your_id

所以最终的数组看起来像这样

Array ( [Your_name] => Sam [Your_location] => United_Kingdom [Your_id] => 1 );

我希望像

str_replace()
这样的东西会起作用

 $arrnew = str_replace("My","Your",$arr);

但这只是在“My”是值而不是键时将“My”替换为“Your”。

那么我该如何更改密钥?

php arrays replace key prefix
3个回答
5
投票
$arrnew = array_combine(str_replace("My","Your",array_keys($arr)), $arr);

2
投票

您无法就地更改密钥,但您可以执行以下操作:

foreach($arr as $key => $value) {
    $arr[str_replace("My","Your",$key)] = $value;
    unset($arr[$key]);
}

这将添加一个带有新键的新元素,取消旧元素的设置

希望这有帮助


0
投票

你可以试试这个:

foreach($arr as $key => $val){
    $newkey = str_replace("My","Your",$key);
    unset($arr[$key]);
    $arr[$newkey] = $val;
}

演示:http://codepad.org/3vKkmAXx

© www.soinside.com 2019 - 2024. All rights reserved.