2012-03-30 65 views
0

我有一個超過1000個項目的大關聯數組,我想重命名一個鍵,但順序必須保留。什麼是最優雅的方式來通過保存順序來更改數組的一個鍵

我不想遍歷整個數組並將其複製到一個新的。

+1

可能重複元素?](http://stackoverflow.com/questions/240660/in-php-how-do-you-change-the-key-of-an-array-element) – 2012-03-30 12:41:51

+0

你知道鑰匙或你的價值知道您想要更改的密鑰的索引或兩者? – hakre 2012-06-21 10:26:32

+0

我只知道密鑰名稱,而不是索引位置 – 2012-06-25 10:18:15

回答

0
$arr[$newkey] = $arr[$oldkey]; 
unset($arr[$oldkey]); 
+0

,它不保留順序。請參閱:http://ideone.com/XV6UG – Fender 2012-03-30 12:46:38

0
$array_keys = array_keys($array); 

    $array_keys[array_search('old', $array_keys)] = 'new'; 

    $array = array_combine($array_keys, $array); 
+0

這是工作,但它複製的所有鍵到一個新的陣列,在大陣列上分配很多RAM – 2012-03-30 12:56:18

+0

不幸的是,我認爲任何解決方案將涉及創建(一)新陣列( S)。我很想在這裏犯錯。 – MichaelRushton 2012-03-30 13:14:41

+0

從PHP的C級應該是可能的 - 但找不到這樣做的函數:( – 2012-03-30 13:23:23

-2
$array[$newkeyname] = $array[$oldkeyname]; 
unset($array[$oldkeyname]); 
[在PHP中,你如何改變一個數組的關鍵
+0

這與上面的答案相同,它不回答問題。這不會保留數組的順序 – 2012-03-30 12:52:27

+0

抱歉,我打開它時沒有回答問題。 – bendataclear 2012-03-30 12:53:50

相關問題