phpの連想配列から指定したキーの要素を、指定したキーの順番で取得する方法

日本語で説明すると面倒ですねw

以下のような配列から

$list = array(
    "item100" => "aaa", 
    "item50" => "bbb", 
    "item30" => "ccc", 
    "item10" => "ddd"
);

以下のような配列を取得したかったのです。

$list = array(
    "item30" => "ccc", 
    "item50" => "bbb"
);

最終的にたどり着いたのは、この方法でした。

$list = array(
    "item100" => "aaa", 
    "item50" => "bbb", 
    "item30" => "ccc", 
    "item10" => "ddd"
);
$cols = array("item30", "item50");
$ret = array_merge(
    array_flip($cols), 
    array_intersect_key($list, array_flip($cols))
);

array_intersect_keyを行うと必要な要素は取得できるんですが、要素の並び順がもともとの $list の状態を保持していました。そこで、array_mergeを使って、指定したkeyの順番を保ちつつ、値を $list のもので上書きしています。