あなたはできる配列要素のキーを「変更」する新しいキーを設定し、古いキーを削除するだけです。
$array[$newKey] = $array[$oldKey];
unset($array[$oldKey]);
ただし、これによりキーは配列の末尾に移動します。
順序を変えずにキーを変更するエレガントな方法はありますか?
(追記: この質問は単に概念的な興味から出たものであり、どこかで必要だからというわけではありません。)
ベストアンサー1
テスト済みで動作します:)
function replace_key($array, $old_key, $new_key) {
$keys = array_keys($array);
if (false === $index = array_search($old_key, $keys, true)) {
throw new Exception(sprintf('Key "%s" does not exist', $old_key));
}
$keys[$index] = $new_key;
return array_combine($keys, array_values($array));
}
$array = [ 'a' => '1', 'b' => '2', 'c' => '3' ];
$new_array = replace_key($array, 'b', 'e');