1

I have an array like below.

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

I'm trying to change the keys:

  • from My_name, My_Location, My_id
  • to Your_name, Your_Location, Your_id.

So the final array would look like

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

I was hoping something like str_replace() would work

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

But this is only replacing "My" to "Your" if "My" is a value, not a key.

So how would I change the keys?

mickmackusa
  • 43,625
  • 12
  • 83
  • 136
Sam Healey
  • 666
  • 2
  • 8
  • 22
  • The best option is probably to create your array with more generic keys such as `name`, `id`, and `location` in the first place – Mark Baker Jul 20 '13 at 16:32

3 Answers3

5
$arrnew = array_combine(str_replace("My","Your",array_keys($arr)), $arr);
u_mulder
  • 54,101
  • 5
  • 48
  • 64
2

you cannot change the keys in-place but you can do something like this:

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

This will add a new element with the new keys unsetting the old element

Hope this helps

Mangiucugna
  • 1,732
  • 1
  • 14
  • 23
0

You could try this:

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

Demo: http://codepad.org/3vKkmAXx

Josh
  • 2,835
  • 1
  • 21
  • 33