Array 改變鍵名不改變順序

陣列中若要改變鍵名(key),用簡單的替換方式則會造成陣列順序變動,若不想要順序變動的話,可以參考以下方式:

$array = array( "a" => "1", "b" => "2", "c" => "3" );
function replace_key($array, $old_key, $new_key) {
    $keys = array_keys($array);
    if (false === $index = array_search($old_key, $keys)) {
        throw new Exception(sprintf('Key "%s" does not exit', $old_key));
    }
    $keys[$index] = $new_key;
    return array_combine($keys, array_values($array));
}
//將key name:b 替換為 e
$new_array = replace_key($array, "b", "e");


輸出結果為:

old_array : Array ( [a] => 1 [b] => 2 [c] => 3 )
new_array : Array ( [a] => 1 [e] => 2 [c] => 3 )


搞定,如此一來順序也不會改變。



來源 : http://stackoverflow.com/questions/8883974/change-...


arrow
arrow
    創作者介紹
    創作者 CccKaAsS 的頭像
    CccKaAsS

    ccckaass的部落格

    CccKaAsS 發表在 痞客邦 留言(0) 人氣()