Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla for w funkcji
x2008x
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 10.11.2009

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


Witam, mam problem z wyświetlaniem listy w pętli for, wyświetla mi tylko 1 słowo z 5, oto kod:
  1. function slowaList($slowa) {
  2. $lista = explode(",", $slowa);
  3. for($x = 0; $x <= 5; $x++){
  4. $list[$x] = '<ul><li>'.$lista[$x].'</li></ul>';
  5. return $list[$x];
  6. }
  7. }


Nie mogę dać echo zamiast return, bo chcę wyświetlić to w danym miejscu, proszę o pomoc. Dzięki.
Go to the top of the page
+Quote Post
Greg0
post
Post #2





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


return przesuń za pętle i zwróć całą tablicę $list bo o to ci przecież chodzi:
  1. return $list;


Przejrzyściej by pewnie było użyć pętli foreach w ten sposób:
  1. $lista = explode(",", $slowa);
  2. $list = array();
  3. $list[] = '<ul>';
  4. foreach($lista as $row){
  5. $list[] = '<li>'.$row.'</li>';
  6. }
  7. $list[] = '</ul>';
  8. return $list;


Ten post edytował Greg0 1.07.2013, 11:36:44
Go to the top of the page
+Quote Post
x2008x
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 10.11.2009

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


Obydwie metody wskazują Array.

Ten post edytował x2008x 1.07.2013, 11:45:23
Go to the top of the page
+Quote Post
Greg0
post
Post #4





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


Pokazuje Array bo funkcja zwraca tablicę, inaczej się nie da. Funkcja nie może zwracać kilka wartości tylko jedną. Jeśli chcesz żeby wyświetlało kilka wartości musisz wstawić do niej echo co nie jest dobrą praktyką.

Ten post edytował Greg0 1.07.2013, 11:46:40
Go to the top of the page
+Quote Post
x2008x
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 10.11.2009

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


Właśnie moim celem jest ominięcie echo. Nie mam pomysłu jak rozwiązać ten problem, mam do wyboru dwie opcje:
- w dodawaniu artykułu zapisuję słowa kluczowe jako listę, dzięki tej funkcji,
- w wyświetlaniu artykułu pokazuję listę ze słów kluczowych, dzięki tej funkcji.

Kod całości(używam smarty):
  1. function slowaList($slowa) {
  2. $lista = explode(",", $slowa);
  3. for($x = 0; $x <= 5; $x++){
  4. $list[$x] = '<ul><li>'.$lista[$x].'</li></ul>';
  5. }
  6. return $list[1];
  7. }
  8.  
  9.  
  10. $time = time();
  11. $zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec` LIMIT 36");
  12. $ile = mysql_num_rows($zap);
  13. for ( $i=0; $i<$ile; $i++ ) {
  14. $wiersz = mysql_fetch_array($zap);
  15. $wiersz['tnij'] = slowaList($wiersz['slowa']);
  16. $produkt[$i] = $wiersz;
  17.  
  18.  
  19.  
  20. }


Ten post edytował x2008x 1.07.2013, 11:52:54
Go to the top of the page
+Quote Post
gitbejbe
post
Post #6





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


Cytat
function slowaList($slowa) {
$lista = explode(",", $slowa);
for($x = 0; $x <= 5; $x++){
$list[$x] = '<ul><li>'.$lista[$x].'</li></ul>';
}
return $list[1];
}


$time = time();
$zap = mysql_query("SELECT * FROM `produkty` WHERE `data_koniec` > '$time' ORDER BY `data_koniec` LIMIT 36");
$ile = mysql_num_rows($zap);
for ( $i=0; $i<$ile; $i++ ) {
$wiersz = mysql_fetch_array($zap);
$wiersz['tnij'] = slowaList($wiersz['slowa']);
$produkt[$i] = $wiersz;
}

(IMG:style_emoticons/default/facepalmxd.gif)

Ty w ogóle wiesz co napisałeś ? ^^ Zrób coś z tym lepiej - nie wiem usuń spal internet czy coś, ale nie pokazuj takich rzeczy publicznie !

a teraz na poważnie: aby wyświetlić tablice robisz coś takiego:
  1. $wiersz = mysql_fetch_array($zap);
  2. $lista = explode(",", $wiersz['slowa']);
  3.  
  4. foreach ($lista as $klucz => $wartosc)
  5. echo "tab['".$klucz."'] ==". $wartosc; // tab[klucz] = klucz tablicy / $wartosc to twoje slowa.

Reszte już sobie ogarniesz

ps: " $wiersz = mysql_fetch_array($zap); $wiersz['tnij'] = slowaList($wiersz['slowa']); $produkt[$i] = $wiersz; " zrobiłeś mi dziurę w mózgu

EDIT:
a i źle ci napisałem, zapomniałem o pętli
  1. while ($wiersz = mysql_fetch_array($zap))
  2. {
  3. $lista = explode(",", $wiersz['slowa']);
  4.  
  5. foreach ($lista as $klucz => $wartosc)
  6. echo "tab['".$klucz."'] ==". $wartosc; // tab[klucz] = klucz tablicy / $wartosc to twoje slowa.
  7. }


Ten post edytował gitbejbe 1.07.2013, 12:27:57
Go to the top of the page
+Quote Post
zbychoCom
post
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 9
Dołączył: 7.04.2011

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


Chyba chodzi Tobie o to, aby funkcja zamiast tablicy zwróciła ciąg (string)

  1. function slowaList($slowa){
  2. $echoString = '<ul>';
  3. $lista = explode(",", $slowa);
  4. for($x = 0; $x <= 5; $x++){
  5. $echoString.= '<li>'.$lista[$x].'</li>';
  6. }
  7. $echoString.='</ul>';
  8. return $echoString;
  9. }
Go to the top of the page
+Quote Post
x2008x
post
Post #8





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 10.11.2009

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


Tak chodziło o to, dzięki za pomoc.

gitbejbe PS,
Dzięki za zwrócenie uwagi, faktycznie zrobiłem to źle, ale na błędach się uczy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gitbejbe
post
Post #9





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


@up

spoko : ) wiem o co chodzi i to rozumiem - inaczej bym olał temat z podawaniem rozwiązania.
praktyka czyni mistrza

powodzenia : )
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:46