2012-07-02 177 views
3

我有一個雙層數組。 第一級有大約10個索引。 這些包含每個包含一個單詞的275元素數組。array_merge不按預期工作

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 
) 

現在,通過的情況下,像添加的圖像佔據空間,我有時需要重新計算所剩餘的字的數目和再分發仍然使得陣列。

爲此,我編寫了下面的函數,讓剩餘的數組成爲一個很長的單詞數組,然後我可以將array_chunk設置爲正確的比例。 & $ array是對「母數組」的引用,$ memory是一組剩餘的單詞,$ index是我們通過for循環迭代的位置,$ limit是第二級的「數組」長度,in這種情況下,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)時只是打印試驗編號不脫離$陣列[$ C]的額外的變量。 我該如何解決這個問題?

回答

24

我發現它沒有工作的原因。 我認爲array_merge是通過引用而不是通過返回工作的。

通過使線

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

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

現在按預期工作。

+1

輝煌。感謝您的幫助。 – DavidHyogo