Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z pętla foreach
Star
post 13.05.2015, 09:14:15
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


Witam

Mam taką tablicę:

  1. Array ( [0] => Array ( [0] => 1 [1] => 2 [2] =>3 [3] => 4 [4] => 5))


kod od petli

  1. foreach ($wynik as $val) {
  2. echo "matched: " . $val[0] . "\n";
  3. echo "part 1: " . $val[1] . "\n";
  4. echo "part 2: " . $val[3] . "\n";
  5. echo "part 3: " . $val[4] . "\n\n";
  6. }


chciałem wywołac ja za pomocą pętli i wszystko jest ok poza tym ,że pokazuje mi podwojnie,tzn zamiast 4 wyników mam 8. Co jest tego przyczyną ?
Go to the top of the page
+Quote Post
kreatiff
post 13.05.2015, 10:15:09
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Na pewno nie ta pętla, bo ona wykonuje się tylko raz. Więc albo masz inną tablicę $wynik na wejściu, albo w kodzie gdzieś jest coś co powoduje podwójne wywołanie tej pętli.
Jeśli dane do tablicy $wynik pobierane są z bazy, to najpierw przejrzyj za pomocą var_dump() cały wynik zapytania. Całkiem możliwe, że to właśnie tam jest to "podwojenie".

Ten post edytował kreatiff 13.05.2015, 10:15:52
Go to the top of the page
+Quote Post
Star
post 13.05.2015, 10:31:09
Post #3





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


sprawa wygląda tak ze za pomocą preg_match_all(); przeparsowałem linki aby wyciagnac z nich identyfikatory
link do parsowania wyglada tak :
<a id="login" href="http://jakasstrona.pl/(.+?)/">
gdy linkow na stronie jest np 50 i gdy to sprawdzam wrzucając wynik do inputa to pierw mam 50
value="<a id="login" href="http://jakasstrona.pl/23">" />
value="<a id="login" href="http://jakasstrona.pl/24">" />
value="<a id="login" href="http://jakasstrona.pl/25">" />

a dopiero po tych 50 pojawia sie własciwe czyli np
value="23" />
value="24" />
value="25" />

w jaki sposób moge to naprawić ?
Go to the top of the page
+Quote Post
kreatiff
post 13.05.2015, 13:24:59
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Czyli tablica $wynik jest inna niż pokazujesz w pierwszym poście, bo preg_match_all tworzy tablicę wielowymiarową, w której podtablica [0] zawiera całe dopasowanie wzoru, a dopiero kolejne poddablice [1], [2], itd. ewentualne dopasowania cząstkowe wskazane we wzorze.

Zrób foreach tylko dla $wynik[1], albo przed pętlą usuń podtablicę z indeksem [0].
Go to the top of the page
+Quote Post
Star
post 13.05.2015, 13:29:28
Post #5





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


Miałeś racje,pomogło :-)
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 10:47