1

有以下数组:

arr1 = array(array('xxx',3),array('yyy',2));

我需要将其转换为数组arr2,其中每个条目的出现次数等于数组中的第二列值arr1。例如,对于上面给出的arr1arr2应该如下:

arr2 = array(array('xxx'),array('xxx'),array('xxx'),array('yyy'),array('yyy'));

我写了下面的代码,但我的问题是:是否有可能以更简单的方式做同样的事情?

for ($i=0; $i<count($arr1); $i++) {
  for ($j=0; $j<$arr1[i][1]; $j++) {
     $arr2[] = array($arr1[0]);
  }
}
4

2 回答 2

3

我认为 aforeach更简单,更容易阅读。

$arr1 = array(array('xxx', 3), array('yyy', 2));
$arr2 = array();

foreach ($arr1 as $arr)
{
    for ($i = 0; $i < $arr[1]; $i++)
    {
        $arr2[] = array($arr[0]);
    }
}
于 2012-05-19T16:34:03.170 回答
1
foreach ($arr1 as $entry) {
    $arr2[] = array_fill(0, $entry[1], array($entry[0]));
}
$arr2 = call_user_func_array('array_merge', $arr2);

我不会用它。它的可读性要差得多。

于 2012-05-19T16:46:15.933 回答