いくつかの助けをいただければ幸いです
次の内容のtxtファイルがあります。
1234|dog|apartment|two
1234|cat|apartment|one
1234|dog|house|two
1234|dog|apartment|three
動物が「家」に住む「犬」のエントリを削除したい
<?php
if (isset($_POST['delete_entry]))
{
//identifies the file
$file = "db.txt";
//opens the file to read
@$fpo = fopen($file, 'r');
//while we have not reached the end of the file
while(!feof($fpo))
{
//read each line of the file into an array called animal
$animal[] = fgets($fpo);
}
//close the file
fclose($fpo);
//iterate through the array
foreach ($animal as $a)
{
if the string contains dog and apartment
if ((stripos ($a, 'dog']))&&(stripos ($a, 'house')))
{
//dont do anything
}
else
{
//otherwise print out the string
echo $a.'<br/>';
}
}
}
?>
これにより、'dog' と 'house' が表示されるエントリのない配列が正常に出力されます。ただし、これをフラットファイルに書き戻す必要がありますが、問題が発生しています。
各エントリが見つかったらすぐにファイルに書き戻すなど、さまざまなオプションを試しました。
Warning: feof() expects parameter 1 to be resource, boolean given in
Warning: fwrite(): 9 is not a valid stream resource in
Warning: fclose(): 9 is not a valid stream resource in
これらは私が遭遇したエラーの中にあります。配列についての私の理解から、
- animal と呼ばれるこの配列を
調べると、- インデックス [0] の 2 つの条件がチェックされ、
- エントリが見つからない場合は、$a に割り当てられます。
- 次に、インデックス [1] から始まる配列を通過し
ます。 - など。
新しい値が $a に割り当てられるたびに。
表示されるたびにファイルに出力するとうまくいくと思いましたが、ここで上記の fwrite および fclose エラーが発生し、これを解決する方法がわかりません (まだ)。
具体的に選択された 1 つのエントリについて、「アパート」を家に置き換える必要がある部分をまだ少し実行する必要がありますが、「削除」を整理するとそこに到達します。
コードは必要ありません。おそらく、私を支援するロジックフローだけです。
ありがとう