合并“n”数组?

时间:2014-06-11 12:50:36

标签: php

我有一个函数,它将一个目录数组作为参数。我正在尝试合并这个数组,所以我可以用它进行比较。当我要添加可变数量的数组时,如何使用array_merge()

public function foo($items, $dirs = []) {
    $skus = file($items, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $list = [];

    foreach($dirs as $img) {
        array_push($list, scandir($img));
    }

    $foo = array_merge($list[0], $list[1]); // Don't know what to do here ..
}

4 个答案:

答案 0 :(得分:1)

可能不是最好的方法,但你可以制作多个array_merge():

$array = array();

for ( $i = 0 ; $i < count($list); $i++ )
    $array = array_merge($array, $list[$i]);

答案 1 :(得分:1)

PHP支持将数组作为参数发送到函数:

$foo = call_user_func_array('array_merge', $list);

这会将$list个元素传递给array_merge函数。

顺便说一句,您可能想要使用array_reduce

$foo = array_reduce($list, 'array_merge', []);

两种方法都给出了相同的结果。

答案 2 :(得分:1)

你可以使用array_merge php函数:array array_merge(array $ array1 [,array $ ...])

http://www.php.net//manual/en/function.array-merge.php

答案 3 :(得分:0)

几乎所拥有的内容,将最新列表添加到$ mergedArray。 &安培;通过引用传递:

$mergedArray = array(); (somewhere in your code, heck its PHP you dont need to define this first but for the sake of clarity ....)
public function foo($items, $dirs = [], &$mergedArray) {
    $skus = file($items, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $list = [];

    foreach($dirs as $img) {
        array_push($list, scandir($img));
    }

    $mergedArray = array_merge($mergedArray, $list); 
}