Change array key without changing order

前端 未结 8 1618
难免孤独
难免孤独 2020-12-03 07:17

You can \"change\" the key of an array element simply by setting the new key and removing the old:

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


        
8条回答
  •  半阙折子戏
    2020-12-03 07:47

    Check keys existence before proceeding… Otherwise the result can be catastrophic if the new key already exists... or unnecessary processing time/memory consumption if the key to be replaced does not exist.

    function array_rename_key( array $array, $old_key, $new_key ) {
        // if $new_key already exists, or if $old_key doesn't exists
        if ( array_key_exists( $new_key, $array ) || ! array_key_exists( $old_key, $array ) ) {
            return $array;
        }
    
        $new_array = [];
        foreach ( $array as $k => $v ) {
            $new_array[ $k === $old_key ? $new_key : $k ] = $v;
        }
    
        return $new_array;
    }
    

提交回复
热议问题