array_merge未按预期工作

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
)

现在,由于某些情况,比如添加了占用空间的图像,有时我需要重新计算剩余单词数并重新分配仍然存在的数组。
为此,我编写了下面的函数,使剩余数组成为一个长长的单词数组,然后可以将其按正确比例进行拆分。&$array是“母数组”的引用,$memory是多余单词的数组,$index是我们通过for循环迭代的位置,$limit是第二级“数组”的长度,在这种情况下为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]中的测试数字,而没有其他变量。如何解决这个问题?

1个回答

48

我找到了它不起作用的原因。

我以为array_merge是按引用而不是按返回值工作的。

通过将行改为

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

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

现在它已经按预期工作。


1
太棒了。感谢你在那方面的帮助。 - DavidHyogo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接