2

私のコードでは、ダミー配列のコピーをいくつか作成する必要があります。たとえば、配列は単純です$dummy = array('val'=> 0)。この配列のコピーをN個作成し、同様の構造を持つ既存の配列の最後に貼り付けたいと思います。明らかにこれはforループで行うことができますが、読みやすくするために、これをより冗長にする組み込み関数があるかどうか疑問に思います。

forループを使用して思いついたコードは次のとおりです。

//example data, not real code
$existingArray = array([0] => array('val'=>2),[1] => array('val'=>3) );

$n = 2;
for($i=0;$i<$n;$i++) {
   $dummy = array('val'=>0); //make a new array
   $existingArray[] = $dummy; //add it to the end of $existingArray
}

繰り返しになりますが、そのような関数が存在する場合は、これを関数で書き直したいと思います。これに沿った何か(明らかにこれらは実際の関数ではありません):

//make $n copies of the array
$newvals = clone(array('val'=>0), $n);

//tack the new arrays on the end of the existing array
append($newvals, $existingArray)
4

1 に答える 1

5

私はあなたが探していると思いますarray_fill

array array_fill ( int $start_index , int $num , mixed $value )

numパラメータの値のエントリで配列を埋めます。valueキーはパラメータから始まりstart_indexます。

それで:

$newElements = array_fill(0, $n, Array('val' => 0));

あなたはまだあなた自身への追加を処理する必要があり$newElementsます$existingArray、おそらくarray_merge:で

array array_merge ( array $array1 [, array $... ] )

1つ以上の配列の要素をマージして、1つの値が前の配列の最後に追加されるようにします。結果の配列を返します。

入力配列に同じ文字列キーがある場合、そのキーの新しい値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きしませんが、追加されます。

数値キーを使用した入力配列の値は、結果配列のゼロから始まる増分キーで番号が付け直されます。

それで:

$existingArray = array_merge($existingArray, $newElements);

トップレベルの配列には数値インデックスが付けられているため、これはすべて機能します。

于 2013-02-19T17:40:20.113 に答える