1

多くの場合、他の配列へのキーの配列を持っていることに気づき、対応する値を取得したいと思います。たとえば、ランダムなサブ配列を選択したい場合、関数 array_rand($array)はランダムなインデックスの配列を返し、値を取得したいと考えています。これ以外にも多くの例がありますが、一般的な問題 (通常は関数型プログラミング スタイルから生じる) は、キーの配列があり、対応する値の配列が必要なことです。これはこれを行うための冗長な方法ですが、この頻繁なタスクを行うためのより短い方法があるかどうか疑問に思っていましたか?

方法 1:

$array_of_values = array();
foreach($array_of_indices as $index)
    $array_of_values[] = $array_of_data[$index];

方法 2:

function index_array($index) { return $array_of_data[$index]; }
$array_of_values = array_map("index_array", $array_of_indices);

方法 3:

$array_of_values = array_intersect_key($array_of_data,
                   array_fill_keys($array_of_indices, ''));

これを行うための単一の関数が存在することを期待していますが、ドキュメントを読んだ後、見つけることができませんでした。誰もがより良い方法を知っていますか?

4

1 に答える 1

1

独自にこれを行う関数はありませんが、方法 3よりも少し簡単な方法があります。

array_intersect_key($array_of_data, array_flip($array_of_keys));
于 2013-09-04T22:33:52.840 に答える