我有一个数组,其中包含我必须处理的文件的行,数组的每个元素都是文件的一行。处理完毕后,我将文件解压,写出来并使用它。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