Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sposób na błędy typu Notice.
8rol
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 10.10.2009

Ostrzeżenie: (0%)
-----


Witam, mam skrypt, który pobiera pewien tekst z zewnętrznej strony i wykonuje na nim różne dalsze czyności.

Oto kawałek mojego kodu:

  1. $pobrany_plik= "lalalala|bebebe";
  2.  
  3. $wynik= explode("|",$pobrany_plik);
  4.  
  5. $test1= $wynik[0];
  6. $test2= $wynik[1];
  7.  
  8. // Dalsze instrukcje


Skrypt tego typu na ogół działa dobrze, problem pojawia się, gdy $pobrany_plik przyjmuje wartość np. "asddssdfsdf".
Wtedy pojawia się błędu "Notice: Undefined offset ...". Chodzi o to iż zmiennej $test2 nie można przypisać wartości $wynik[1], ponieważ ta zmienna jest pusta, gdyż explode nic do niej nie "wrzuciło".

Moim rozwiązaniem na tego typu problem jest:

  1. if(isset($wynik[1])){
  2. $test2 = wynik[1];
  3. }
  4. else{
  5. $test2= '';
  6. }


Jednak szukam jakieś lepszej metody, gdyż używanie zamieszczonego kodu jest dla mnie bardzo nie wygodne, gdy muszę go umieszczać w kilkudzięsieciu miejscach.

Czy ktoś zna lepszy sposób na rozwiązane tego problemu (nie uwzględniając nie wyświetlania błędów)?

Ten post edytował 8rol 21.10.2009, 23:19:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To czemu sprawdzenia i przypisania nie zrobisz już na poziomie tej pierwszej części?
Skoro
$wynik= explode("|",$pobrany_plik)
zwraca Ci tablicę to policz ile ma elementów. Jeśli 2 to ok. Jeśli 1 to do test2 daj pustkę. Ostatecznie masz więc coś w stylu:
  1. $wynik= explode("|",$pobrany_plik);
  2. $test1= $wynik[0];
  3. if( count($wynik) == 1)
  4. $test2 = '';
  5. else
  6. $test2 = $wynik[1];
Bo chyba o to Ci chodzi?

@down: Po co aż tak kombinować (IMG:style_emoticons/default/blink.gif) Przecież wystarczy sprawdzić rozmiar tablicy wynikowej po explode i wiemy wszystko. Do tego musiałbyś znów z tablicy wychodzić, bo on oczekuje danych w zmiennych test1 i test2. A tak ma od razu po explode to w zasadzie (IMG:style_emoticons/default/winksmiley.jpg) A tak robisz ze zwykłej tablicy, dwuwymiarową tablicę. Dla mnie tłuczenie kotka za pomocą młotka.

Ten post edytował thek 22.10.2009, 12:26:42
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 08:39