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 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

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 wink.gif

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





Grupa: Zarejestrowani
Postów: 6 380
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 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ł 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
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 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 '';


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 380
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 01:07