Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
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ć 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 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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
karbo
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.09.2008

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


Ja bym tu zastosował kod:
  1. $a=array('','');
  2. $r=explode(';','aa;bb');
  3. foreach ($r as $b => $v){
  4. $a[$b]=$v;
  5. }
  6. echo '['.$a[0].' - '.$a[1].']';


--------------------
  1. <?php
  2. exit();
  3. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 09:57