2017-02-11 1 views
0

$array에있는 모든 키에서 밑줄을 하이픈 (대시)으로 바꾸고 싶습니다.연관 배열 키의 문자 바꾸기

여기 내 배열 :

Array ([username] => bob [email] => [email protected] [first_name] => Bob [last_name] => Jones [picture] => /images/no-picture.png [birthday] =>) 

이 예제에서는 _로 대체하는 -을 가지고 [first_name] 이제까지 다른 키 [first-name]를 교체합니다. i 에만 키가 아닌 값이 필요합니다. 예를 들어, 나는 이 아니며,이 필요하기 때문에 no-picture.png이 필요합니다. 감사! 사용 후

$test = str_replace('-', '_', $array); 

답변

1

사용 array_keys() GET 키 array_combine() 바인드 새 키 :

<?php 
function replaceArrayKeys($array) { 
    $replacedKeys = str_replace('-', '_', array_keys($array)); 
    return array_combine($replacedKeys, $array); 
} 

$array =[ 
    'username' => 'bob', 
    'email' => '[email protected]', 
    'first-name' => 'Bob', 
    'last-name' => 'Jones', 
    'picture' => '/images/no-picture.png', 
    'birthday' => '1', 
]; 

print_r(replaceArrayKeys($array)); 
0

또 다른 해결책은 array_map 사용 :

function setHyphen(&$array){ 
    $array= array_combine(array_map(function($str){ return str_replace("_","-",$str); }, array_keys($array)),array_values($array)); 
} 
setHyphen($array); 
print_r($array); 

OUPUT :

Array ( 
    [username] => bob 
    [email] => [email protected] 
    [first-name] => Bob 
    [last-name] => Jones 
    [picture] => /images/no-picture.png 
    [birthday] => 123)