7

私はダブルレベルの配列を持っています。最初のレベルには、約 10 個のインデックスがあります。これらには、それぞれ単語を含む 275 要素の配列が含まれます。

Array
(
[0] => Array
    (
    [0] => Suspendisse
    [1] => Nam.
    [2] => Amet
    [3] => amet
    [4] => urna
    [5] => condimentum
    [6] => Vestibulum
    [7] => sem
    [8] => at
    [9] => Curabitur
    [10] => lorem
    .... to [275]
    )
[1] => Array
    (
    ... you get the idea
    )
... 10 elements total
)

現在、スペースを占有する追加された画像のように、状況によって、残っている単語の数を再計算し、まだ残っている配列を再分配する必要がある場合があります。

そのために、残りの配列を単語の 1 つの大きな長い配列にする以下の関数を作成しました。これにより、正しい比率で array_chunk を実行できます。&$array は「マザー配列」への参照、$memory は余分な単語の配列、$index は for ループを反復する場所、$limit は第 2 レベルの「配列」の長さです。ケース 275

function redistribute(&$array,$memory,$index,$limit)
{
$ret[] = $array[0];
// skip past the current processed items
for($c=1;$c<$index;$c++)
    {
    $ret[] = $array[$c];
    }
// apply current item
$ret[] = $array[$index];

//join the rest into one big array off words;
$r2=$memory;
$length = count($array);
for($c=$index+1;$c<$length;++$c)
    {
    array_merge($r2,$array[$c]);
    print_r($r2);
    }
}

質問

array_merge(arr1,arr2) が機能していないようです。

実行時

redistribute($splitupchunk,array('test','test2','test3','test4'),$i,275);

print_r($r2) は、$array[$c] からの余分な変数なしでテスト番号を出力するだけです。これを修正するにはどうすればよいですか?

4

1 に答える 1

47

それがうまくいかなかった理由を見つけました。array_mergeは、returnではなく参照によって機能すると想定しました。

ラインを作ることによって

array_merge($r2,$array[$c]);

$r2 = array_merge($r2,$array[$c]);

これで、期待どおりに機能します。

于 2012-07-02T09:06:34.620 に答える