Star
13.05.2015, 09:14:15
Witam
Mam taką tablicę:
Array ( [0
] => Array ( [0] => 1 [1] => 2 [2] =>3 [3] => 4 [4] => 5))
kod od petli
foreach ($wynik as $val) {
echo "matched: " . $val[0] . "\n"; echo "part 1: " . $val[1] . "\n"; echo "part 2: " . $val[3] . "\n"; echo "part 3: " . $val[4] . "\n\n"; }
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ą ?
kreatiff
13.05.2015, 10:15:09
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".
Star
13.05.2015, 10:31:09
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ć ?
kreatiff
13.05.2015, 13:24:59
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].
Star
13.05.2015, 13:29:28
Miałeś racje,pomogło :-)
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.