PHP:数组的转换

时间:2012-05-19 16:24:13

标签: php arrays

有以下数组:

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]);
  }
}

2 个答案:

答案 0 :(得分:3)

我认为foreach更简单易读。

$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]);
    }
}

答案 1 :(得分:1)

foreach ($arr1 as $entry) {
    $arr2[] = array_fill(0, $entry[1], array($entry[0]));
}
$arr2 = call_user_func_array('array_merge', $arr2);

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