2013-03-28 61 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) { 
} 

請注意,這並不使結果或代碼的性能差異,它只是幫助調試和理解(這種方式通常更重要)。