PHP数组键名修改

4

I have an array like

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

现在我需要更换密钥,有没有什么方法可以做到这一点?

我知道可以这样做:

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

但是,还有其他方法吗?

1
我认为复制/删除方法是最好的。 - Phil
1
我不认为有问题,但是你的方法有什么不对吗? - AgentConundrum
@AgentConundrum:当前方法没有问题,但是当我需要编辑很多键时,情况会变得更糟。 - I-M-JM
3个回答

3

你的做法是正确的。在关联数组中,你不能修改一个键,只能添加或删除键。如果你发现自己需要频繁进行“键修改”,那么就需要退一步,评估是否在解决问题时使用了最合适的数据结构。


1

如果你有点疯狂,你可以编写一个函数。

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

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

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

如果原始键不存在,则此操作将不起作用。它还会覆盖现有的键。


谢谢Alex,请检查Ben提供的链接,它很好。 - I-M-JM
@IMJM 我已经使用PHP多年了,从未遇到过交换键是解决问题的情况。 - alex
我也使用PHP已经有7年了,但这次我正在编辑别人写的糟糕的代码,所以别无选择,还是感谢你的帮助。 - I-M-JM
@IMJM 哦,是的,我对此非常了解 :) - alex

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接