2010-12-15 98 views
4

我有一個像PHP陣列關鍵的變化

$arr = array('key1' => 'hello'); 

數組現在我需要改變的關鍵,是沒有任何理由,我可以做到這一點

我知道我能做到這一點的方法:

$arr['key2'] = $arr['key1']; unset($arr['key1']); 

但是,有沒有其他方法?

+1

我認爲複製/刪除方法是最好的。 – Phil 2010-12-15 06:03:35

+1

我不認爲有問題,但問題中的方法有什麼問題? – AgentConundrum 2010-12-15 06:03:41

+0

這就是它。 – yoda 2010-12-15 06:04:49

回答

1

如果你是一個有點瘋狂,你可以寫一個函數。

function changeKey(array $array, $oldKey, $newKey) { 

    if (! array_key_exists($array, $oldKey)) { 
     return $array; 
    } 

    $array[$newKey] = $array[$oldKey]; 
    unset($array[$oldKey]); 
    return $array; 
} 

如果原始密鑰不存在,這將不做任何事。它也會覆蓋現有的密鑰。

+0

謝謝alex,請檢查由Ben提供的鏈接,這很好 – 2010-12-15 06:27:21

+0

@IMJM我已經使用了PHP多年,並從未遇到過交換密鑰是解決方案的問題。 – alex 2010-12-15 06:31:21

+0

我也使用PHP 7年,但這次我正在編輯某人的代碼,這是寫得很糟糕,所以沒有其他選擇,但仍然感謝您的幫助 – 2010-12-15 06:38:13

3

你做這件事的方式是正確的。您無法修改關聯數組中的鍵。您只能添加或刪除密鑰。如果您發現自己需要做許多「關鍵修改」,則可能需要退後一步並評估是否爲您的問題使用了最合適的數據結構。

+1

感謝您的意見 – 2010-12-15 06:15:35