Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] błąd Undefined offset przy używaniu list()
wariat12
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.03.2015

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


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ł?
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


sprawdź co zwraca $wynik
Go to the top of the page
+Quote Post
wariat12
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.03.2015

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


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"
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no i masz odpowiedź, nie możesz wykonywać operacji na pustej tablicy, wiec dodaj warunek i zadziała (IMG:style_emoticons/default/wink.gif)

druga sprawa to nwm poco tyle operacji przypisania robisz, ale rozumiem to jest jakiś przykład tylko nie całość kodu (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 8.05.2016, 17:13:36
Go to the top of the page
+Quote Post
wariat12
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.03.2015

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


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?
Go to the top of the page
+Quote Post
kapslokk
post
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


isset
Go to the top of the page
+Quote Post
com
post
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no zwykły isset
Go to the top of the page
+Quote Post
wariat12
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.03.2015

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


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?
Go to the top of the page
+Quote Post
kapslokk
post
Post #9





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Sprawdź czy istnieje konkretny index tablicy, a nie cała tablica.
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


  1. if(!empty($wynik))
  2. {
  3. list($zmienna) = $wynik;
  4. }


mój błąd bo jak tablica pusta to isset zwraca true (IMG:style_emoticons/default/wink.gif)

@up, jak index jak indexu nie ma i to potrzebował sprawdzić (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
viking
post
Post #11





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


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).
Go to the top of the page
+Quote Post
kapslokk
post
Post #12





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Fakt, jakoś mi się w głowie zakodowało, że taki notice wywala jak odwołujemy się do nieistniejacego indexu i tak palnąłem (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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ł (IMG:style_emoticons/default/wink.gif)

BTW na serwerze też miałeś ale tam są wyłączone błędy to nie widziałeś ze rzuca noticami (IMG:style_emoticons/default/wink.gif) przejrzyj cały kod (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
KsaR
post
Post #14





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Tak offtopujac lekko to jeszcze lepiej tę pętle skasować jeżeli tak masz w orginalnym skrypcie,
Bo leci tylko raz (IMG:style_emoticons/default/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] (IMG:style_emoticons/default/questionmark.gif) '';


Ten post edytował KsaR 8.05.2016, 19:18:26
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


W PHP 7.1 będzie fajny myk: https://wiki.php.net/rfc/short_list_syntax
Go to the top of the page
+Quote Post

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: 4.10.2025 - 01:07