Autor Zpráva
Josef14
Profil *
Ahoj dělám program, který vypíše všechny soubory v složkách:
    public function readDisk($path){
        error_reporting(0);
        $handler = opendir($path);
        $i = 0;
        $str = null;
        while($file = readdir($handler)){
            if($file != "." && $file != "..") {
                if(!is_numeric(strpos($file, "$"))){
                    $filepath = $path."\\".$file;
                    if(is_dir($filepath)){
                        if($i == 6) continue;
                        $this->readDisk ($filepath);
                        $i++;
                    }
                    else $str .= $filepath."<br>"; //funguje echo $filepath."<br>";
                }
            }
        }
        return $str;
    }

Chtěl bych to udělat tak, abych mohl výstup této metody uložit do souboru. Ale když v else použiju vkládání do proměnné, nebo tam dám yield, tak se vypisuje pouze kořenový adresář. když to v else přímo vypisuju v echo, tak to funguje normálně. nevíte kde je problém?
Alphard
Profil
Proměnnou $str přesuňte o úroveň výš, tj. na úroveň třídy, přistupujte k ní $this->str a pak nebude problémem lokální kontext rekurzivně volané metody.

Nebo tam nechte ten return, ale musíte pak návratovou hodnotu spojovat s lokální $str.
Josef14
Profil *
díky, už to funguje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: