Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sposób na błędy typu Notice.
Forum PHP.pl > Forum > PHP
8rol
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)?
thek
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.
karbo
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].']';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.