Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze zwróceniem wielu wartości w funkcji
Forum PHP.pl > Forum > Przedszkole
kaktus283
Witam, otóż gryzie mnie pytanie jak zrobić podczas wykonania jednej funkcji zwrócenie dwóch wyników.
Mam taki oto krótki kod:
  1. function getRate($adres)
  2. {
  3. $id = explode('#', $adres);
  4. @$source = file_get_contents($adres);
  5. $regexp_up = '/<span id=\"up'.$id[1].'\">(.*)<\/span>/';
  6. @preg_match_all($regexp_up, $source, $up);
  7. $regexp_down = '/<span id=\"down'.$id[1].'\">(.*)<\/span>/';
  8. @preg_match_all($regexp, $source, $down);
  9. return $up; //TO
  10. return $down //I TO
  11. }


Wszystko ok, mogę to rozpisać na dwie funkcje, ale po co na pewno da się to zrobić podczas jednego zapytania.
Jeżeli zrobię tak jak teraz no to zwróci mi tylko to pierwsze (Czyli up, a down pominie - tak wiem zwróci tablice ale to inna bajka).
nospor
return konczy wykonywanie funkckcji.
Zwracaj tablice

return array($up, $down);
kaktus283
Faktycznie, nie pomyślałem aby zapisać to do tablicy ...
Jeszcze tylko mam problem z odwołaniem się poprawnie do danych elementów tablicy (da się bez stosowania foreach?) - dokładniej z dostaniem się do elementów:
[0][1][0] oraz [1][1][0]
Zwraca mi coś takiego:

Array
  1. (
  2. [0] => Array
  3. (
  4. [0] => Array
  5. (
  6. [0] => <span id="up291505">3</span>
  7.  
  8. )
  9.  
  10. [1] => Array
  11. (
  12. [0] => 3
  13. )
  14.  
  15. )
  16.  
  17. [1] => Array
  18. (
  19. [0] => Array
  20. (
  21. [0] => <span id="down291505">1</span>
  22. )
  23.  
  24. [1] => Array
  25. (
  26. [0] => 1
  27. )
  28.  
  29. )
  30.  
  31. )
nekomata
Mozesz sie odwolywac np.tak
  1. echo $zmienna[0][0][0];// wyswietli <span id="up291505">3</span>
  2. echo $zmienna[1][0][0];// wyswietli <span id="down291505">1</span>

równie dobrze mógłbyś w funkcji dać echo jak te dwa elementy maja być obok siebie, potem tylko wywołać w właściwym miejscu.
Moglbys tez zamienic ten kawalek funkcji
  1. return $up; //TO
  2. return $down //I TO

Na ten
  1. return array($up[0][0],$down[0][0]);

wtedy masz tylko dwa elementy w array'u.
Prezi2907
a nie prościej jest zrobić tak:

  1.  
  2. $array = array($up,$down)
  3. return $array;
  4.  


Później jeżeli chcesz z tego wyciągnąć info to tylko

  1. $up = $array[0];
  2. $down = $array[1];


Zdaje mi się że chyba tak jest najprościej smile.gif

Jak byś miał więcej tablic to zagnieżdżasz jedną w drugą i po sprawie...
kaktus283
Ja nie chcę zwracać całego ciągu, z którego wycinałem - tylko samą liczbę.
Mi niestety nie zwraca nic, jeśli majstruję coś ze zwracaniem tablicy...
Piogola
  1. return array($source[0][1][0], $source[1][1][0]);
kaktus283
Właśnie problem taki, że zwraca mi ciągle takie coś podczas printowania funkcji:
  1. Array ( [0] => [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.