Change array key without changing order

前端 未结 8 1571
难免孤独
难免孤独 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:59

    We are using this function for changing multiple array keys within an array keeping the order:

    function replace_keys($array, $keys_map) {
        $keys = array_keys($array);
        foreach($keys_map as $old_key=>$new_key){
            if (false === $index = array_search($old_key, $keys)) {
                continue;
            }
            $keys[$index] = $new_key;
        }
        return array_combine($keys, array_values($array));
    }
    

    You can pass an array as $keys_map, like this:

    $keys_map=array("old_key_1"=>"new_key_1", "old_key_2"=>"new_key_2",...)
    

    This solution is based on Kristian one.

    0 讨论(0)
  • 2020-12-03 08:03

    Something like this may also work:

    $langs = array("EN" => "English", 
            "ZH" => "Chinese", 
            "DA" => "Danish",
            "NL" => "Dutch", 
            "FI" => "Finnish", 
            "FR" => "French",
            "DE" => "German");
    $json = str_replace('"EN":', '"en":', json_encode($langs));
    print_r(json_decode($json, true));
    

    OUTPUT:

    Array
    (
        [en] => English
        [ZH] => Chinese
        [DA] => Danish
        [NL] => Dutch
        [FI] => Finnish
        [FR] => French
        [DE] => German
    )
    
    0 讨论(0)
提交回复
热议问题