![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 30.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, zadałem zapytanie do bazy i otwrzymałem wynik w moim przypadku
$wiersz[0] i $wiersz[1] każdy z nich ma dokładnie 4 wartości, mój problem wyglada nastepująco: gdy kod wyglada tak : CODE for ($licznik = 0; $wiersz = mysql_fetch_row($zapytanie); ++$licznik) { $tablica_xxx[$licznik] = $wiersz[0]; $tablica_yyy[$licznik] = $wiersz[1]; echo "$tablica_xxx[$licznik] - $tablica_yyy[$licznik] "; } wtedy wszystko gra wyświetla mi elegancko to co trzeba ale kiedy zapisuje to tak : CODE for ($licznik = 0; $wiersz = mysql_fetch_row($zapytanie); ++$licznik) { $tablica_xxx[$licznik] = $wiersz[0]; $tablica_yyy[$licznik] = $wiersz[1]; } for ($licznik = 0; $wiersz = mysql_fetch_row($zapytanie); ++$licznik) { echo "$tablica_xxx[$licznik] - $tablica_yyy[$licznik] "; } nic sie nie wyświetla , a gdy zapisuje w ten sposób : CODE for ($licznik = 0; $wiersz = mysql_fetch_row($zapytanie); ++$licznik) { $tablica_xxx[$licznik] = $wiersz[0]; $tablica_yyy[$licznik] = $wiersz[1]; } for ($licznik = 0; count($tablica_xxx); ++$licznik) { echo "$tablica_xxx[$licznik] - $tablica_yyy[$licznik] "; } owszem wyświetla wyniki ale oprócz tego rozszerza mi strone aż do nieskończoności tak jak by petla nie była "domknieta" Czemu tak sie dzieje, gdzie popelniłem błąd i jak to rozwiązać z góry dzieki za pomoc Ten post edytował ultra_18 30.10.2008, 12:40:08 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Instrukcje w pętli będą się wykonywać dopóki warunek w pętli jest spełniony. A jak Twój warunek wygląda? count($tablica_xxx); Po zrzutowanieu tego na boolean to ma wartość zawsze true więc pętla kręci się w nieskoczoność.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 30.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Instrukcje w pętli będą się wykonywać dopóki warunek w pętli jest spełniony. A jak Twój warunek wygląda? count($tablica_xxx); Po zrzutowanieu tego na boolean to ma wartość zawsze true więc pętla kręci się w nieskoczoność. funkcja count podobnie jak sizeof zwraca liczbe elementow tablicy wiec można ja użyć w pętli tyle że tamto wyrażnie było nie poprawne, prawidłowo powinno tak wyglądać: CODE for ($licznik = 0; $licznik <= (count($tablica_xxx) - 1); $licznik++)
Ten post edytował ultra_18 30.10.2008, 13:22:25 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 248 Pomógł: 38 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o ten drugio przypadek:
to podejrzewam, że przed tymi dwoma forami nie zadeklarowałes zmiennej tablicowej $tablica i dlatego są one traktowane lokalnie. Czyli w 1 pętli for tworzy tablice i coś tam do niej wpisuje, ale po wyjściu z niej tablice są usuwane. Dlatego też w drugiej pętli nic nie wyswietla, bo w $tablica_xxx i $tablica_yyy nic nie już nie ma. Ten post edytował kaem 30.10.2008, 13:28:21 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 12 Dołączył: 9.10.2008 Skąd: Tricity.Rumia() Ostrzeżenie: (0%) ![]() ![]() |
drugim parametrem pętli for jest warunek wyjścia interpreter wykonuje instrukcję tam zawarta i sprawdza jej wartość: 0 - false cokolwiek innego true
twoje programy: mają:
interpreter przed każdym przebiegiem pętli wykonuje: $wiersz = mysql_fetch_row($zapytanie); mysql_fetch_row zwraca jakiś resource który jest po zrzutowaniu równy true - różny od zera albo false gdy przejżysz juz wszystki wiersze(z dokumentacji), wtedy oczywiście warunek wyjścia jest spełniony i pętla się przerywa jeżeli po tym zapisie znowu wykonasz mysql_fetch_row na tej samej zmiennej - funkcja zwroci false i wogole nie wejdzie do drugiej pętli jesli chodzi o pętle z count count zwraca wartośc liczbową równą ilości elementów w tablicy = jeżeli ilość tych elementów jest różna od zera wartosc po zrzutowaniu będize true i pętla wykona kolejny obieg. Można używać count tak jak ty to użyłeś na początku ale wtedy warto by było gdzieś w pętli usuwac kolejne elementy tablicy np array_pop Polecam manual: for, mysql_fetch_row, count ;-) abys rozumiał co piszesz |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 30.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o ten drugio przypadek: [...] to podejrzewam, że przed tymi dwoma forami nie zadeklarowałes zmiennej tablicowej $tablica i dlatego są one traktowane lokalnie. Czyli w 1 pętli for tworzy tablice i coś tam do niej wpisuje, ale po wyjściu z niej tablice są usuwane. Dlatego też w drugiej pętli nic nie wyswietla, bo w $tablica_xxx i $tablica_yyy nic nie już nie ma. zadeklarowałem : CODE $tablica_xxx = array(); $tablica_yyy = array(); jeśli o to chodzi. Dziekuje za pomoc temat można zamknąć. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
ultra_18 chyba sprytniej jest tak:
for ($licznik = 0; $licznik < count($tablica_xxx); $licznik++) Niby drobiazg, ale jednak trochę operacji mniej do zrobienia ![]() -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@Joshima jak juz mowisz o mniejszej liczbie operacji, to moglabys jeszcze nie zostawiac tego count() w forze
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
No mogłabym
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:06 |