基于另一个查找/映射数组替换数组中的键
2022-08-30 05:55:12
我有一个关联数组,其形式为key是一个数值,但它不是一个连续的数值。键实际上是一个 ID 号,值是一个计数。这对于大多数实例来说都很好,但是我想要一个函数来获取数组的人类可读名称并将其用于键,而无需更改值。key => value
我没有看到这样做的函数,但我假设我需要提供旧密钥和新密钥(我都有)并转换数组。有没有一种有效的方法来做到这一点?
我有一个关联数组,其形式为key是一个数值,但它不是一个连续的数值。键实际上是一个 ID 号,值是一个计数。这对于大多数实例来说都很好,但是我想要一个函数来获取数组的人类可读名称并将其用于键,而无需更改值。key => value
我没有看到这样做的函数,但我假设我需要提供旧密钥和新密钥(我都有)并转换数组。有没有一种有效的方法来做到这一点?
$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);
执行此操作并保留数组顺序的方法是将数组键放入单独的数组中,查找并替换该数组中的键,然后将其与值组合回来。
下面是一个函数可以做到这一点:
function change_key( $array, $old_key, $new_key ) {
if( ! array_key_exists( $old_key, $array ) )
return $array;
$keys = array_keys( $array );
$keys[ array_search( $old_key, $keys ) ] = $new_key;
return array_combine( $keys, $array );
}