2017-02-11 89 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]。我想只有想要的鑰匙不值。例如,我做不是想要no-picture.png因爲這是一個值。謝謝!

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

回答

1

使用array_keys()獲取密鑰使用後綁定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); 

輸出繼電器:

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