Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tablica z wynikiem pętli foreach
Matt23
post 25.07.2014, 22:52:50
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 19.01.2013

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


Witam zebranych,
ttworzę skrypt który pobierze mi liste linków z innej strony
Żeby parsować html korzystam z pluginu HTML Simple Dom Parser. Problem pojawia się w miejscu, gdy chcę wrzucić wynik do tablicy

  1. $http = "http:/";
  2. foreach($html->find('div#gallery') as $wynik){
  3.  
  4. foreach($wynik->find('a') as $wynik){
  5.  
  6. $wynik=$wynik->href.'<br>';
  7. $wynik=$http.$wynik;
  8. echo $wynik;
  9. }
  10. }


Ten kodzik zwraca mi listę linków. Jednakże każdy ze zwróconych linków muszę jeszcze raz parsować, dlatego aby rozdzielić linki z jednej zmiennej chciałem zrobić tablicę. Nie udaje mi się to ani gdy tworzę ją poza pętlami, ani gdy tworzę ją w pętli. W tym drugim przypadku var dump pokazuje, że do tablicy trafił tylko pierwssy z pobranych adresów. Zmienna poza pętla nie jest wcale dostępna, czy można coś z tym zrobić?

Ten post edytował Matt23 25.07.2014, 23:24:14
Go to the top of the page
+Quote Post
vermis
post 26.07.2014, 05:18:56
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

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


Przed pętlą wstawiasz
  1. $tablica = array();

w pętli foreach (na początku) wstawiasz wyniki do tablicy
  1. $tablica[] = $wynik->href;

Później nadpisujesz zmienną $wynik, więc musi to być na początku pętli.


--------------------
Go to the top of the page
+Quote Post
Matt23
post 26.07.2014, 16:58:01
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 19.01.2013

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


@up,
Twoja odpowiedź mi pomogła, aczkolwiek borykam się z następnym problemem.

  1. $ile = count($tablica);
  2.  
  3. for ($num=0; $num <= $ile ; $num++) {
  4. $html = $tablica[$num];
  5.  
  6. foreach($html->find('div#largepic') as $wynik){
  7. foreach($wynik->find('img') as $wynik){
  8. $wynik = $wynik->src;
  9. echo '<img src="'.$wynik.'">';
  10. }
  11. }
  12. }


Ten kodzik wykonuje się po poprzednim i niestety wyrzuca mi error w linijce 6 - Fatal error: Call to a member function find() on a non-object.

Dziwne, bo analogiczna instrukcja działa bez problemu parę linijek wyżej.
Go to the top of the page
+Quote Post
Turson
post 26.07.2014, 17:47:01
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


$html = $tablica[$num];
foreach($html->find('div#largepic') as $wynik)

$html ma być obiektem klasy Simple HTML Dom a nie byle czym
Go to the top of the page
+Quote Post
Matt23
post 26.07.2014, 17:51:34
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 19.01.2013

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


W tej linijce $html przyjmuje za wartość adres url wyjęty z tablicy pełnej adresów, więc niby nie powinno być problemu.

Masz może jakiś sposób na to?
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: 15.12.2019 - 16:13