我有以下数组:
$arr = [ 'demo_key1' => 'demoval1', 'demo_key2' => 'demoval2' ];
并且,我需要获得这个转换后的数组:
$arr = [ 'demo-key1' => 'demoval1', 'demo-key2' => 'demoval2' ];
所以,我想替换_到 - 数字,我该怎么办?
我在Stack Overflow上尝试了一些关于这个的例子,因为我无法做到。
我非常感谢你的帮助。
答案 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_keys
,str_replace
,array_values
和array_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