我有一個數組,其中包含我必須處理的文件的行,數組的每個元素都是文件的一行。處理完畢後,我將文件解壓,寫出來並使用它。for vs foreach - 引用數組元素
當我嘗試使用foreach
爲此,它不起作用。我懷疑它是在創建元素的副本,而不是直接引用該元素,所以使用了for
循環代替,這確實奏效。
我的問題是,有沒有辦法在這種情況下使用foreach
循環,或者當重新定義數組的元素時,您總是必須使用for
循環?
示例代碼:
$fileArray = file('blah.txt');
foreach ($fileArray as $thisLine) {
if (condition) {
$thisLine = "changed state";
}
}
$newFileArray = implode('',$fileArray);
沒有工作VS:
$fileArray = file('blah.txt');
for ($x=0;$x<count($fileArray);$x++) {
if (condition) {
$fileArray[$x] = "changed state";
}
}
$newFileArray = implode('',$fileArray);
後就正常了。
你可以使用foreach,但如果你想引用變量的使用和infront。在您的示例中,foreach($ fileArray as&$ fileLine){' –
]永遠不要忘記在foreach循環後直接引用此引用,否則將破壞數據的優勢:'unset($ fileLine) – Sven