我有一个函数,它将一个目录数组作为参数。我正在尝试合并这个数组,所以我可以用它进行比较。当我要添加可变数量的数组时,如何使用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 ..
}
答案 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 $ ...])
答案 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);
}