NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze: Chyba Undefined index: při počítání a načtení prvků pole v poli

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

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Tomáš Dvořák:28.8.2017 22:59

Ahoj,

nějak se mi nedaří rozchodit na php 5.6 věc, která na php 5.5 chodí.

Mám takovéto pole:

Array (
        [2448] =>
        Array (
                [ID] => 2448
                [nazev] => aaa
                [rodic] => 0
                [sklady] =>
                [podrazene] =>
                Array (
                        [0] =>
                        Array (
                                [ID] => 2449
                                [nazev] => aaa
                                [rodic] => 2448
                                [sklady] =>
                        )
                )
        )
        [930] =>
        Array (
                [ID] => 930
                [nazev] => Akumulační kamna - NOVÉ
                [rodic] => 0
                [sklady] => AKNO0
                [podrazene] =>
                Array (
                        [0] =>
                        Array (
                                [ID] => 931
                                [nazev] => prodej
                                [rodic] => 930
                                [sklady] => AKNO01
                        )
                )
        )

        [6] =>
        Array (
                [ID] => 43
                [nazev] => Dražice
                [rodic] => 2
                [sklady] => BODZ0
                [podrazene] =>
                Array (
                        [0] =>
                        Array (
                                [ID] => 52
                                [nazev] => Anodové tyče
                                [rodic] => 43
                                [sklady] => BODZ01
                        )
                        [1] =>
                        Array (
                                [ID] => 53
                                [nazev] => Čistící prostředky
                                [rodic] => 43
                                [sklady] => BODZ02
                        )
                )
        )
)

Poté skcript, který pole prochází:

private function _hledej($pole, $id){
        foreach ($pole as &$kat){
                if ($kat['ID']==$id){
                        return $kat;
                }
                else {
                        if (count($kat['podrazene'])>0) {
                                $vystup = $this->_hledej($kat['podrazene'], $id);
                                if ($vystup!==false) return $vystup;
                        }
                }
        }
        return false;
}

$pole je to pole viz výše. $id je např. 6. Problém je, že mi to hlásí:

Notice: Undefined index: podrazene in xy.php on line 173.

Co mám špatně, že mi to hlásí, že není index? Když k tomu přidám $kat['podraze­ne'][0] nebo $kat['podraze­ne'][1], tak to taky nejede.
Ta samá chyba pak bude určitě o pár řádků níže.

S poli jsem moc nedělal, tak si nevím rady co je tam za chybu.

Díky moc za nakopnutí. Tomáš

 
Odpovědět
28.8.2017 22:59
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:2.9.2017 15:42

Zalezi na tom, jak mas v php zapnute upozorovani na chyby/upozorne­ni/notifikace

jestli to chces mit univerzalni a ciste, tak musis kontrolovat existenci indexu v poli nez jej pouzijes

private function _hledej($pole, $id){
        foreach ($pole as &$kat){
                if ( isset($kat['ID']) && ($kat['ID']==$id) ){
                        return $kat;
                }
                else {
                        if ( isset($kat['podrazene']) && (count($kat['podrazene'])>0) ) {
                                $vystup = $this->_hledej($kat['podrazene'], $id);
                                if ($vystup!==false) return $vystup;
                        }
                }
        }
        return false;
}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
+1
2.9.2017 15:42
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 2 zpráv z 2.