0

私は今夜​​、配列の値によって定義される多くの配列に配列を分割する方法を理解するために一生懸命働いてきました

私はこの価値を持つことができます

$array = array ( 
    array ("Apple", 10),
    array("Ball", 5) 
);

次に、Appleに値が「Apple」である10個の配列を持たせ、Ballに値が「Ball」である5個の配列を持たせたいと思います。

それから私はこれを思いついたが、出力はかなり奇妙に見える。

$newarray = array();
foreach($array as $val):
    for($i = 1; $i <= $val[1]; $i++):
        $newarray[$i] = $val[0];
    endfor;
endforeach;

print_r($newarray);
// Array ( [0] => Ball [1] => Ball [2] => Ball [3] => Ball [4] => Ball [5] => Ball [6] => Apple [7] => Apple [8] => Apple [9] => Apple [10] => Apple )

皆さんが私の質問を理解し、誰かがそれを理解できることを願っています。

よろしくお願いします。

4

2 に答える 2

6

array_fill()ここで助けることができます:

$result = array();

foreach ($array as $sub) {
  $result[] = array_fill(0, $sub[1], $sub[0]);
}

print_r($result);

ここで実際に見てください:http://viper-7.com/MhnWFt

于 2012-07-11T23:55:14.750 に答える
1

私が正しく理解していれば、目的は10個の「リンゴ」と5個の「ボール」を含む配列を作成することです。

$array = array ( 
    array ("Apple", 10),
    array("Ball", 5) 
);
$newarray = array();
foreach($array as $key => $val){
    $tmparray = null;
    for($i = 1; $i <= $val[1]; $i++){
        $tmparray[$i] = $val[0];
    }
    $newarray[] = $tmparray;
}
print_r($newarray);

出力:

Array
(
    [0] => Array
        (
            [1] => Apple
            [2] => Apple
            [3] => Apple
            [4] => Apple
            [5] => Apple
            [6] => Apple
            [7] => Apple
            [8] => Apple
            [9] => Apple
            [10] => Apple
        )

    [1] => Array
        (
            [1] => Ball
            [2] => Ball
            [3] => Ball
            [4] => Ball
            [5] => Ball
        )

)
于 2012-07-12T00:00:07.367 に答える