Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [php] Undefined index?

Napisany przez: luis2luis 19.07.2019, 10:17:51

Witam.

Przechodzę na php 7.2 i analizuje sprawę różnych noticeów, które się pojawiają.

Generuje sobie dynamicznie tabelkę. Wcześniej tworze tablicę $jednostka_miary[] z pewnymi danymi i w zalezności od potrzeb podstawiam index.
Czasami zdaża się że indeks nie istnieje w tablicy.

Jak to profesjonalnie rozwiązać, żeby nie generowało notice?


  1.  
  2. http://www.php.net/print('<tr><td><b>'.$q.'.</b> '.$row['nazwa'].' - '.$jednostka_miary[$row['kod']].' </td></tr>');
  3.  


wyświetla mi to notice: Notice: Undefined offset: 0 in /alt/home/webmaster/admin/lista.php on line 182

Czy wczesniej musze zrobić
if (isset($jednostka_miary[$row['kod']])) { $jednostka = $jednostka_miary[$row['kod']; } else {$jednostka = '' }

i tą zmiennawstawiać do tabelki?

Napisany przez: nospor 19.07.2019, 10:20:40

Jesli uzywasz php7 to mozesz dac poprostu zamiast
$jednostka_miary[$row['kod']]
dac
$jednostka_miary[$row['kod']] questionmark.gif ''

ps: ta emotka znaku zapytania to poprostu 2 znaki zapytania. Forum wpieprza sie emotka w nie

Napisany przez: Pyton_000 22.07.2019, 06:58:42

Zawsze możesz wyłączyć parsowanie emotek w poście wink.gif

Napisany przez: emillo91 27.07.2019, 23:13:21

Można to zrobić poprzez wywołanie metody klasy odpowiedzialnej za parsowanie takich danych czyli np class MySqlRowParser a w nim metodę getRowData ( i tutaj wrzucasz dane z bazy), która zwraca obiekt MySqlRowParser a później wywołać metodę getCollData, która będzie sprawdzać czy dane istnieją i zwracać null w przypadku braku indeksu. Możesz jeszcze wyłączyć z poziomu php zgłaszanie notice-ów ale nie będziesz wiedzieć jakie będą zgłaszane pozostałe błędy

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)