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 回答