処理しなければならないファイルの行を含む配列がありました。配列の各要素はファイルの行でした。処理後、ファイルを内破し、書き出して使用します。
これを使おうとしたところ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);
これはうまくいきました。