Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podwójny zwrot foreach()
Forum PHP.pl > Forum > PHP
escaflowne
Witam!
Mam problem (no ale, kto ich nie ma biggrin.gif).
[php:1:db9a218e27]<?php
while($tab = mysql_fetch_array($query)){
foreach($tab as $dane){
echo"$dane <br>";
}
}
?>[/php:1:db9a218e27]
Kończy się to tym, że na ekranie, istotnie mam wypisaną zawartość tablicy z bazy danych, ale 2x. Zawartość każdego pola wypisana jest dwukrotnie. Co zrobić, żeby wszystko wyświetlało się pojedyńczo?
Seth
trzeba ustawic typ zwracanych danych przez mysql_fetch_array. Gdyz bez jego podania tablica zawiera elementy z indexami asocjacyjnymi oraz numerycznymi - stad duplikaty.

[php:1:0cf653ce6e]while ( $tab = mysql_fetch_array( $query, MYSQL_ASSOC ) )
{
//...[/php:1:0cf653ce6e]
escaflowne
Dzięki Bender... to znaczy, Seth aaevil.gif Działa!

-- UPDATE --
Dobra, jeszcze jedno pytanie: foreach wypisuje elementy tablicy, póki się nie skończą. Chciałbym, żeby do wartości ostatniego elementu tablicy został dopisany jakiś ciąg. Mogę użyć if, ale jaki dać warunek?
Seth
Mozesz dac tak:
[php:1:c0ab569051]$tablica[size_of( $tablica ) - 1] .= 'cos';[/php:1:c0ab569051]
Doda to do ostatniego elementu tablicy string: cos
escaflowne
A jak dać to do pętli if, która sprawdzała by przy każdym przejściu foreach, czy wypisany element, jest ostatni?
Seth
Nie jest to zbyt dobry pomysl, gdyz w foreach'u nie masz wartosci, ktory akurtat index jest pobierany, wiec nie wiesz czy to juz kiniec czy moze srodek lub poczatek.
Mozna to zrobic przez podanie wczesniej do zmiennej rozmiaru calej tablicy i potem w foreach'u zwiekszanie innej zmiennej co 1 po kazdym przejsciu i sprawdzanei czy wartosc ta nie ejst rowna wielkosci tablic - wtedy mieli bysmy koncowy element - ale takie rozwiazanie po pierwsze jest malo wydajne, a po drugie wzasadzie robi to samo co for.
GeoS
Nie prosciej przejsc na jednoznaczne zapytanie, np. mysql_fetch_row(); :?:

Wtedy tylko sizeof(...) i po zabawie smile.gif
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.