Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] błąd Undefined offset przy używaniu list()
Forum PHP.pl > Forum > Przedszkole
wariat12
Witam,

mam taki problem, że na serwerze nazwy skrypt działał poprawnie, a w momencie przeniesienia go na lokalny serwer zaczął wyrzucać błąd "Notice: Undefined offset: 0 in C:\xampp\htdocs\xx.php on line x"
  1. $soap = new SoapClient(null, array('location' => 'server.php?wsdl', 'uri' => ' '));
  2. for($id = 1; $id < 2; $id++)
  3. {
  4. $i = 8;
  5. $wynik = $soap->getKodTowFeatures('spAsTUbrECr6nuVexERepeSupr3h7HEs', $id, $i);
  6. list($zmienna) = $wynik;
  7. $zm2 = $zmienna;
  8. }


Błąd pojawia się w tej linii "list($zmienna) = $wynik;" W jaki sposób zastąpić list(), żeby błąd zniknał?
com
sprawdź co zwraca $wynik
wariat12
var_dump($wynik) zwraca array(0) { } , ale to jest normalna sytuacja, bo czasem ta lista pusta, a czasem ma w sobie jedną wartość z indeksem [0] => "wartosc"
com
no i masz odpowiedź, nie możesz wykonywać operacji na pustej tablicy, wiec dodaj warunek i zadziała wink.gif

druga sprawa to nwm poco tyle operacji przypisania robisz, ale rozumiem to jest jakiś przykład tylko nie całość kodu wink.gif
wariat12
Tak, jest to przykład, ale dzięki, że zwracasz uwagę, jeśli zauważyłeś. Mógłbyś podpowiedzieć jak skonstruować ten warunek, dla tego typu danych?
kapslokk
isset
com
no zwykły isset
wariat12
Niestety
  1. if(isset($wynik))
  2. {
  3. list($zmienna) = $wynik;
  4. }


To nie to, bo otrzymałem kolejny raz ten sam błąd. Jakieś pomysły? Czy to ja coś źle zrobiłem?
kapslokk
Sprawdź czy istnieje konkretny index tablicy, a nie cała tablica.
com
  1. if(!empty($wynik))
  2. {
  3. list($zmienna) = $wynik;
  4. }


mój błąd bo jak tablica pusta to isset zwraca true wink.gif

@up, jak index jak indexu nie ma i to potrzebował sprawdzić wink.gif
viking
A jeśli masz więcej tych zmiennych w list albo z jakiegoś powodu chcesz coś dodatkowo zwrócić to najlepiej będzie użyć array_pad($wynik, ilość zmiennych w list, tekst).
kapslokk
Fakt, jakoś mi się w głowie zakodowało, że taki notice wywala jak odwołujemy się do nieistniejacego indexu i tak palnąłem biggrin.gif
com
bo własnie wtedy go wywala, ale musisz wtedy znać go, a skoro robisz list to po to żeby się nie zastawiać co on tam zwrócił wink.gif

BTW na serwerze też miałeś ale tam są wyłączone błędy to nie widziałeś ze rzuca noticami wink.gif przejrzyj cały kod biggrin.gif
KsaR
Tak offtopujac lekko to jeszcze lepiej tę pętle skasować jeżeli tak masz w orginalnym skrypcie,
Bo leci tylko raz tongue.gif

I żebyś gdzieś potem nie miał undefined variable $zmienna to lepiej tak zrób:
  1. $zmienna = isset($wynik[0]) ? $wynik[0] : '';

Lub jak używasz php7
  1. $zmienna = $wynik[0] questionmark.gif '';
viking
W PHP 7.1 będzie fajny myk: https://wiki.php.net/rfc/short_list_syntax
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.