phpの連想配列から指定したキーの要素を、指定したキーの順番で取得する方法
日本語で説明すると面倒ですねw
以下のような配列から
1 2 3 4 5 6 | $list = array( "item100" => "aaa", "item50" => "bbb", "item30" => "ccc", "item10" => "ddd" ); |
以下のような配列を取得したかったのです。
1 2 3 4 | $list = array( "item30" => "ccc", "item50" => "bbb" ); |
最終的にたどり着いたのは、この方法でした。
1 2 3 4 5 6 7 8 9 10 11 | $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 のもので上書きしています。