Autor Zpráva
Dlahacz
Profil *
Zdravím ,

vyskytla se mi hodně podivná chyba s kterou si nevím rady

Fatal error: Cannot redeclare loop() (previously declared in /var/www/subdom/royal/app/class/data.php:61) in /var/www/subdom/royal/app/class/data.php on line 61

jestli to dobre chapu tak nemuzu deklarovat funkci loop v souboru data.php na radce 61 protoze je jiz deklarovana v tom samem souboru na stejne radce, coz mi nedava vubec smysl.
Diky za rady.

kdyztak kod :

        public static function getChildArray($parrent, $table = "categories"){
        
            function loop($id){
        
                $ids = array();
        
                if(data::getCategoryArray($id)){
                    
                    foreach(data::getCategoryArray($id) as $cat){

                        $ids[] = $cat["id"];
                        $ids = $ids + loop($cat["id"]);
                        
                    }
                                        
                }
            
                return $ids;
                    
            }
            
            $vysledek = (array)$parrent + loop($parrent);
            
            return $vysledek;
        
        }
Tori
Profil
Asi se ten soubor opakovaně includuje - používejte include_once / require_once.
Dlahacz
Profil *
soubor mam includovany pouze jednou a navíc pomocí pomocí require_once, ale teď jsem ješte zjistil že se ten error zobrazuje pouze kdyz volam getChildArray ze stejné třídy, kdyz volam data::getChildArray(); z kamakoliv jinama tak to funguje správně
Radek9
Profil
Dlahacz:
Je moudré definovat funkci uvnitř funkce? Chyba pravděpodobně nastává při druhém volání metody getChildArray. V tu chvíli je už totiž funkce loop definována z předchozího volání.

Jinak, třeba v JavaScriptu by ti tohle prošlo, protože tam se funkce ukládají do aktuální scope. V PHP se však ukládají přímo do namespace.

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: