0

次のことを行うために、単にループを記述して手動で配列を構築するよりも、より良い(より短い/よりエレガントな)方法を知っている人はいますか?

という配列と という$data別の配列があり$indiciesます。配列には、配列に適用してサブセットを取得$indicies したい一連のインデックスが保持されます。$dataたとえばarray_rand、1 より大きい要素数で実行した場合、インデックスの配列が出力されますが、実際にはデータ項目の配列が必要であり、そのサブセットを構築するためにループする必要があります。

私が知らない、これを巧妙に行うためのマップ削減方法があるかもしれないと考えています。誰にもアイデアはありますか?これが私が今しなければならないことの例です

$indicies = array_rand($data,6); //get 6 random indicies to the data
$subset = array();
foreach($indicies as $index)
    $subset[] = $data[$index];

ここに私がやりたいことに似たものがあります

$subset = $data[array_rand($data,6)];
4

1 に答える 1

2

テストしていませんが、動作するはずです

$result = array_intersect_key(
  $data,
  array_fill_keys($indices, null)
);
于 2012-06-12T11:52:49.653 に答える