Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Problém s pamětí

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Marek Mansor Fojtl:23.2.2018 13:55

Zdravím,
pustil jsem se do kódu, který mi měl posunout funkčnost webu trochu kupředu, ale narazil jsem na jedno úskalí a to je kód samotný.
Mohl by se na to někdo podívat a vysvětlit co je špatně?

class Url
{
        public $getsArray = array('panel', 'page'); //pole s GETy, které chci zjišťovat v url
        public function getUrl()
        {
                $this->getsArray;
                $x = 0;
                $urlArray = array(); //vytvořím prázdné pole pro generování URL
                $urlArray[0] = '?'; //první položka v poli. Začátek GETu
                while (!empty($this->getsArray)) {
                        $y = $x + 1; //nastavil jsem na pozici +1 aby mi nepřepsal otazník pod indexem 0
                        $value = $_GET[$this->getsArray[$x]]; //zjišťuji hodnotu GETu v URL
                        $item = $this->getsArray[$x] . '=' . $value; //vytvářím položku do pole pro URL
                        $urlArray[$y] = $item; //vkládám položku do pole
                        $x++;
                }
                $url = implode("&", $urlArray); //dělám z pole string, který je URL stránky se všemi GETy
                return $url; // navracím URL
        }
}

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 134217736 bytes)
Error ukazuje na tento řádek: $urlArray[$y] = $item;

Odpovědět
23.2.2018 13:55
PHP
Avatar
Odpovídá na Marek Mansor Fojtl
Marek Mansor Fojtl:23.2.2018 14:32

Mohu požádat o smazání vlákna?
Problém jsem již vyřešil

Editováno 23.2.2018 14:34
Nahoru Odpovědět
23.2.2018 14:32
PHP
Avatar
nekukej
Člen
Avatar
Odpovídá na Marek Mansor Fojtl
nekukej:23.2.2018 15:13

Nebuď sobec a poděl se o řešení s ostatními.
To že sem můžeš napsat není určený pro tebe, ale pro komunitu. Je slušností si toho aspoň vážit a chovat se podle toho. :)

 
Nahoru Odpovědět
23.2.2018 15:13
Avatar
TomasGlawaty
Člen
Avatar
TomasGlawaty:23.2.2018 16:34

Řekl bych, že problém je v tom, že

while (!empty($this->getsArray)) {
        # ...
}

nikdy neskončí, jelikož se s tim polem nic nedělá (neodstraňují se z něho žádné položky)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
23.2.2018 16:34
Avatar
Marek Mansor Fojtl:23.2.2018 17:55

TomasGlawaty. Ano přesně tam byla chyba a zjsitil jsem to asi o 10 minut později co jsem vytvořil toto vlákno. Řešení jsi poskytl, proto jsem ti to odsouhlasil v systému.

Každopádně ještě pro uživatele nekukej, tak bych chtěl poznamenat, že jsem také členem komunity, takže to že sem můžu napsat je určené i pro mě, každopádně abych neudělal zlou krev mezi ostatními členy komunity, tak jsem vytvořil kód, který řeší to co potřebuji.

Což je že zadám parametr pro URL ($_GET, a jeho hodnotu) a vytvoří mi odkaz, který mohu použít v tagu <a>. Tento kód jsem vytvořil, abych zachoval parametry přenášené v URL.

function createQuery($get, $param)
{
        $url = $_SERVER['QUERY_STRING'];
        $contain = strpos($url, $get);
        $found = $_GET[$get];
        $replace = str_replace($found, $param, $url);
        $link = '?' . $replace;
        return $link;
}
$address = createQuery('page', 'articles');
echo($address);

Pokud máme adresu: test.php?re=0&pa­ge=5
Výstup bude: ?re=0&page=ar­ticles

Nahoru Odpovědět
23.2.2018 17:55
PHP
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.