Member 13683022 Ответов: 1

Как использовать foreach/fwrite для записи в txt-файл.


Проблема в том, что removeBlog удаляет все строки вместо этого строка за строкой.
Я думаю, что у меня что-то не так с частью foreach/fwrite.
Мой код приходит сюда:

Что я уже пробовал:

<?php

// Class Message

class Message
{
    protected $blogLista=[];
    protected $file = "blog_tmp/blogdata.txt";

    function __construct()
    {
        if(file_exists($this->file)) {
            $txt = fopen($this->file,"r");
            while (!feof($txt)) {
                $line = fgets($txt);
                if (!empty($line)) {
                    $line_arr = explode(",", $line);
                    $obj = new Blog ($line_arr[0], $line_arr[1], $line_arr[2]);
                    $this->blogLista[] = $obj;
                }
            }
            fclose($txt);
        }

    }

    function addBlog($nam,$mes,$dat){
        $txtx=fopen($this->file,"a");
        fwrite($txtx, "$nam,$mes,$dat".PHP_EOL);
        fclose($txtx);
    }

    function removeBlog($ind){
        unset($this->blogLista[$ind]);
        $var=fopen($this->file,"w+");
        //fwrite($var,$this->blogLista);

        foreach ($this->blogLista as $key=>$val){
            fwrite($var,"$val->getName(),$val->getMessage,$val->getDate") ;
        }
        

        fclose($var);
    }
    

    function getBlogLista(){
        return $this->blogLista;
    }
}

//Блог Класса

<?php

class Blog
{

    protected $name='';
    protected $message='';
    protected $date='';

    function __construct($nam,$mes,$dat)
    {
        $this->name=$nam;
        $this->message=$mes;
        $this->date=$dat;
    }

    function getName(){
        return $this->name;
    }

    function getMessage(){
        return $this->message;
    }

    function getDate(){
        return $this->date;
    }
}

Member 13683022

Теперь я решил эту проблему!

1 Ответов

Рейтинг:
9

OriginalGriff

Ответил только для удаления из очереди без ответа - решается ОП