1

次の配列があります。

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

それを array に変換する必要がありますarr2。ここで、各エントリの出現回数は array の 2 列目の値に等しくなります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

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]);
    }
}
于 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 に答える