有以下数组:
arr1 = array(array('xxx',3),array('yyy',2));
我需要将其转换为数组arr2
,其中每个条目的出现次数等于数组arr1
中的第二列值。例如,对于上面给出的arr1
,arr2
应该如下:
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]);
}
}
答案 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);
我不会用它。它的可读性要低得多。