替换数组键

时间:2017-11-03 23:00:52

标签: php arrays

我有以下数组:

$arr = [ 'demo_key1' => 'demoval1', 'demo_key2' => 'demoval2' ];

并且,我需要获得这个转换后的数组:

$arr = [ 'demo-key1' => 'demoval1', 'demo-key2' => 'demoval2' ];

所以,我想替换_到 - 数字,我该怎么办?

我在Stack Overflow上尝试了一些关于这个的例子,因为我无法做到。

我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

以下是一个可以帮助您的示例:

$arr=["demo0"=>"100","demo1"=>["demo_key1"=>"demoval1","demo_key2"=>"demoval2"],"demo3"=> "false"];

function changeKeys($array){
  $newArray=[];
  foreach($array as $key=>$val){
    $newKey=str_replace('_','-',$key);
    if(is_array($val)){
      $newArray[$newKey]=changeKeys($val);
    }else{
      $newArray[$newKey]=$val;
    }
  }
  return $newArray;
}
$arr=changeKeys($arr);

print_r($arr);

输出:

Array
(
    [demo0] => 100
    [demo1] => Array
        (
            [demo-key1] => demoval1
            [demo-key2] => demoval2
        )

    [demo3] => false
)

答案 1 :(得分:0)

您可以在一个表达式中使用array_keysstr_replacearray_valuesarray_combine

$arr = array_combine(str_replace('_', '-', array_keys($arr)), array_values($arr));

如果您需要就地更换,可能是因为您有对数组的引用,那么您可以这样做:

function cleanArrayKeys(&$arr) { // use a reference
    $arr = array_combine(str_replace('_', '-', array_keys($arr)), array_values($arr));
}

$arr = [ 'demo_key1' => 'demoval1', 'demo_key2' => 'demoval2' ];
cleanArrayKeys($arr); 

print_r($arr); // same array reference now has the updated keys