Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pchaniem elementów do tablicy
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam. Mam problem z upychaniem dynamicznie elementów do tablicy.
Otóż, mam już pierwszą tablicę która mniej wiecej daje mi taki oto efekt:
Kod
1 : zmienna11 - zmienna12
2 : zmienna21 - zmienna22
3 : zmienna31 - zmienna32
4 : zmienna41 - zmienna42
5 : zmienna51 - zmienna52
6 : zmienna61 - zmienna62
itd.

i teraz chcę podczas generowania powyższego tekstu z pierwszej tablicy przepisać te elementy do nowej tablicy.
Próbuję w taki sposób ale nie idzie:(
  1. $druga_tablica = array();
  2. foreach($pierwsza_tablica as $wiersz=>$info)
  3. {
  4. $adres = $info->url;
  5. $tytul = $info->title;
  6. array_push($druga_tablica, $adres.' '.$tytul);
  7. }


print_r($tablica); zwraca komunikat "First argument should be an array". Rozumiem, że pierwszy argument (czyli $tablica) musi być tablicą, ale ona jest w pierwszej linijce deklarowana jako tablica.

Czy ktoś ma pomysł jak to rozwiązać?
luck
Pokaż najlepiej cały kod, razem z tym "print_r".
djgarsi
Oto cały kod:
  1. $tablica = array();
  2. function zippysearch($fraza)
  3. {
  4. function google_search_api($args, $referer = 'http://google.pl/', $endpoint = 'web')
  5. {
  6. $url = "http://ajax.googleapis.com/ajax/services/search/".$endpoint;
  7. if ( !array_key_exists('v', $args) )
  8. $args['v'] = '1.0';
  9. $url .= '?'.http_build_query($args, '', '&');
  10. $ch = curl_init();
  11. curl_setopt($ch, CURLOPT_URL, $url);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  13. curl_setopt($ch, CURLOPT_REFERER, $referer);
  14. $body = curl_exec($ch);
  15. curl_close($ch);
  16. return json_decode($body);
  17. }
  18. for ($x=0;$x<=7;$x++)
  19. {
  20. $rez = google_search_api(array(
  21. 'q' => 'site:zippyshare.com '.$fraza,
  22. 'rsz'=>'large',
  23. 'start'=>$x*8,
  24. ));
  25. $dane=$rez->responseData->results;
  26. foreach($dane as $wiersz=>$info)
  27. {
  28. $pozycja = $wiersz+$x*8+1;
  29. $adres = $info->url;
  30. $tytul = $info->title;
  31. array_push($tablica, $adres.' '.$tytul);
  32. }
  33. }
  34. }
  35. $slowo = $_GET['q'];
  36. echo zippysearch($slowo);
  37.  
  38. print_r($tablica);
nospor
http://pl2.php.net/manual/pl/language.variables.scope.php

Jesteś na forum tyle czasu to już mógłbyś z przyzwoitości włączyć wyświetlanie wszystkich błędów i takie pierduły w domu a nie na forum załatwiać.

przenoszę

A tu masz napisane jak włączyć wyświetlanie wszystkich błędów
Temat: Jak poprawnie zada pytanie
Zapoznaj się też z innymi radami - rozwiązują one 90% problemów
luck
Praktycznie od kolegi powyżej już dostałeś odpowiedź wink.gif Brakuje choćby:
  1. return $tablica;
w funkcji zippysearch(). Reszta pewnie stanie się jasna smile.gif
nospor
Nie return a global. No nie wprowadzaj w błąd tylko przeczytaj linka, które podałem smile.gif

edit: choć patrząc na kod:
echo zippysearch($slowo);
to faktycznie brakuje też return smile.gif No ale akurat z błędem array_push nie ma on nic wspólnego wink.gif
djgarsi
No dobra, przeniosłem deklarowanie tablicy do funkcji i teraz var_dump mi zwraca null i Undefined variable.

Edit:
A jest ok. tylko powiedzcie mi jeszcze taka jedną rzecz:) Czemu gdy dam w tej pętli for wiecej niż 7 "okrążeń" to sypie błędami?tongue.gif
luck
Cytat(djgarsi @ 14.09.2011, 21:39:47 ) *
No dobra, przeniosłem deklarowanie tablicy do funkcji i teraz var_dump mi zwraca null i Undefined variable.

Sorry, ale czy spodziewałeś się po tym czegoś innego? Pytam serio...
nospor
Miałeś użyć global. Użyłeś? Zapoznałeś się z linkiem co ci podałem?

Cytat
teraz var_dump mi zwraca null i Undefined variable.
Pokaż kod! Ale wpierw zapoznaj się dokładnie z linkiem, który ci podałem.
djgarsi
Ok. $tablica jest już global, tylko teraz przy wykonaniu pętli wiecej niż 7 razy sypie błędami:(

Teraz kod wygląda tak:
  1. <?php
  2. ini_set('display_errors','1');
  3. function zippysearch($fraza)
  4. {
  5. global $tablica;
  6. function google_search_api($args, $referer = 'http://google.pl/', $endpoint = 'web')
  7. {
  8. $url = "http://ajax.googleapis.com/ajax/services/search/".$endpoint;
  9. if ( !array_key_exists('v', $args) )
  10. $args['v'] = '1.0';
  11. $url .= '?'.http_build_query($args, '', '&');
  12. $ch = curl_init();
  13. curl_setopt($ch, CURLOPT_URL, $url);
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15. curl_setopt($ch, CURLOPT_REFERER, $referer);
  16. $body = curl_exec($ch);
  17. curl_close($ch);
  18. return json_decode($body);
  19. }
  20. for ($x=0;$x<=7;$x++)
  21. {
  22. $tablica = array();
  23. $rez = google_search_api(array(
  24. 'q' => 'site:zippyshare.com '.$fraza,
  25. 'rsz'=>'large',
  26. 'start'=>$x*8,
  27. ));
  28. $dane=$rez->responseData->results;
  29. foreach($dane as $wiersz=>$info)
  30. {
  31. $pozycja = $wiersz+$x*8+1;
  32. $adres = $info->url;
  33. $tytul = $info->title;
  34. array_push($tablica, $adres.' '.$tytul);
  35. }
  36. }
  37. }
  38. $slowo = $_GET['q'];
  39. echo zippysearch($slowo);
  40.  
  41. var_dump($tablica);
  42. ?>
nospor
Cytat
Czemu gdy dam w tej pętli for wiecej niż 7 "okrążeń" to sypie błędami?tongue.gif

1) Po co ten język na końcu?
2) To przez plamy na słońcu
3) Naprawdę jeszcze nie wiesz, że my nie wróżki!? Jakimi błędami ci sypie?
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.