基于另一个查找/映射数组替换数组中的键

2022-08-30 05:55:12

我有一个关联数组,其形式为key是一个数值,但它不是一个连续的数值。键实际上是一个 ID 号,值是一个计数。这对于大多数实例来说都很好,但是我想要一个函数来获取数组的人类可读名称并将其用于键,而无需更改值。key => value

我没有看到这样做的函数,但我假设我需要提供旧密钥和新密钥(我都有)并转换数组。有没有一种有效的方法来做到这一点?


答案 1
$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);

答案 2

执行此操作并保留数组顺序的方法是将数组键放入单独的数组中,查找并替换该数组中的键,然后将其与值组合回来。

下面是一个函数可以做到这一点:

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 );
}