2013-03-28 65 views
1

这更是一个最佳实践问题的一部分:执行两个功能foreach语句

说,我想在foreach语句执行两个功能(这些函数的回报结合起来,作为一个单一的元素对于循环),我会结合他们的声明,如:

foreach(function1($data).function2($data) AS $key=>$value) 

或者有没有更好的方法来做到这一点?

+0

'function1'和'function2'返回什么? – Narek

+0

在这种情况下,都是glpb函数返回目录的内容(文件名列表),我想扫描两个目录,并将两个列表合并为一个循环。 – mrpatg

+0

也许我错了,但'array_merge'? http://php.net/manual/en/function.array-merge.php – Narek

回答

2

如果功能1函数2返回数组则:

foreach(array_merge(function1($data),function2($data)) AS $key=>$value) 
1

首先,阵列串联起来+array_merge(),点仅用于字符串,所以你会得到字符串“ArrayArray” 。

其次,为了更好的可读性和可维护性,你应该分开函数调用和环路初始化:

$fileList = function1($data); 
$fileList += function2($data); 
foreach($fileLists AS $key=>$value) { 
} 

请注意,这并不使结果或代码的性能差异,它只是帮助调试和理解(这种方式通常更重要)。