Буду признателен за некоторую помощь
У меня есть текстовый файл со следующим содержимым:
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/>';
}
}
}
?>
Это успешно распечатывает массив без записи, где появляются" собака "и" дом ".Мне нужно записать это обратно в плоский файл, но столкнуться с трудностями.
Я пробовал различные варианты, включая немедленную запись в файл при обнаружении каждой записи.
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] для двух условий и
- если запись не найдена, он присваивается$ a.
- Затем он проходит через массив, начиная с индекса [1],
- и т. д.
Каждый раз, когда новое значение присваивается $ a.
Я думал, что печать его в файл каждый раз, когда он появляется, может сработать, но здесь я получаю ошибки fwrite и fclose, описанные выше, и не знаю, как их решить (пока).
Мне все еще нужно сделать бит, где мне нужно заменить «квартиру» на дом для одной специально выбранной записи, но я доберусь до нее, как только я разберусь «удалить»
Iмне не нужен код, может быть, просто логический поток, который может помочь мне.
Спасибо