2012-03-30 11 views
0

私は1 000以上のアイテムを持つ大きな連想配列を持っていますが、1つのキーの名前を変更したいが、順序を保持する必要があります。注文を保存して配列のキーを変更する最もエレガントな方法

完全な配列を反復処理して新しい配列にコピーすることはありません。

+1

を行いますが重複する可能性を要素?](http://stackoverflow.com/questions/240660/in-php-how-do-you-change-the-key-of-an-array-element) –

+0

キーの値を知っているか、あなたが変更したいキーのインデックスか両方を知っていますか? – hakre

+0

私はインデックスの位置ではなく、キーの名前を知っています –

答えて

1

はarray_splice機能を見てみましょう:http://php.net/manual/en/function.array-splice.php

あなたは配列のキーを変更するにはどうすればよいPHPでは、[このジョブに

+1

$置換の配列として与えられたキーは保存されません –

+0

あなたは正しいです – Fender

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

は、順序を保持しません。参照:http://ideone.com/XV6UG – Fender

0
$array_keys = array_keys($array); 

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

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

これは動作していますが、大きな配列に大量のRAMを割り当てる新しい配列にすべてのキーをコピーします –

+0

残念ながら、私は残念ながら、どの解決策も(a)新しい配列( s)。私はここで間違っているのが大好きです。 – MichaelRushton

+0

PHPのCレベルから、可能でなければなりませんが、関数を見つけることができません:( –

-2
$array[$newkeyname] = $array[$oldkeyname]; 
unset($array[$oldkeyname]); 
+0

これは上記と同じ答えですが、質問に答えません。これは配列の順序を保持しません –

+0

申し訳ありませんが、私はそれを開いたときに質問に答えませんでした。 – bendataclear

関連する問題