Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Return, zwracanie kilku wartości.
Forum PHP.pl > Forum > PHP
Cinamicom
Witam! Od razu mówię, nie mogę uzyć echa do tego.


  1. tutaj zapytanie
  2. foreach($stmt as $row)
  3. {
  4. $title = $row['title'];
  5.  
  6. return '
  7. <h4>'.$title.'</h4>'.$description.'';
  8. }


no i problem w tym, że wyświetli mi tylko 1 tytuł i 1 opis, choć mam ich na prawdę x;

Jak to zrobić dobrze?

Dziękuje.
Damonsson
http://stackoverflow.com/questions/3579892...3579950#3579950 - Co do tytułu tematu.

A dla Twojego przykładu, to chyba najlepiej jakbyś stworzył pustą tablicę przed foreach, w foreach array_push. I dopiero za foreach, całą tablicę zwracał w returnie, pod jedną zmienną. Bo przecież możesz też chcieć zwrócić jeszcze coś innego oprócz tego, wtedy przyda się link powyżej.
Cinamicom
Nie bardzo wiem jak to zrobić.

  1. $bycz = array();
  2. foreach($stmt as $row)
  3. {
  4. $title = $row['title'];
  5. $description = $row['description'];
  6.  
  7. array_push(hmm);
  8.  
  9. }
  10.  
  11. return $bycz;
buliq
  1. array_push($bycz, '
  2. <h4>'.$title.'</h4>'.$description.'');
Cinamicom
Warning: Invalid argument supplied for foreach() in mój system szablonów
buliq
no powiedział ci parser gdzie jest problem? nie przekazałeś tablicy ...
Cinamicom
Może jestem tępy, ale nie bardzo rozumiem.. co_jest.gif jak to ma działać.


  1. if(is_array($value)) {
  2. foreach($tags as $tag => $tagvalue) { -
  3. if (!empty($tag)) {
  4. $this->tags['{$'.$tag.'}'] = $tagvalue; --->28linia z błędem
  5. }
  6. }
  7. } else {
  8. $this -> tags['{$'.$tags.'}'] = $value;
  9. }
Damonsson
A co to jest? I co to ma wspólnego z tematem? A błąd masz w linijce z foreach przecież.
Cinamicom
No bo Warning: Invalid argument supplied for foreach() in [xxx]/Template.php on line 28


Tamten skrypt z returnem, wysyła mi to do tego z templata.
buliq
Mother of God ...

To nie może być linia z błędem, bo wyraźnie napisałeś że chodzi o foreach (2 linie wyżej, tam gdzie stoi -)
$tags nie jest typu tablicowego,
skąd masz $value?
$value zamień na $tags

Jeżeli tworzysz własny system szablonów, przestań. Jest wiele rozwiązań lepszych od twojego, zanim jeszcze zaczniesz myśleć o swoim. Ameryki nie odkryjesz.
Cinamicom
"Własne ale ciasne"

w value trzymam kod (ten z array push) a tags to tytuł.
buliq
"ciasne ale Własne" jeżeli już, inaczej nie ma sensu ...

trzymasz tam ten kod, ok.

Zastanów się logicznie, w jakim celu sprawdzasz czy zmienna jest tablicą, jeżeli jej nie używasz w tym fragmencie kodu?

@edit:
Z tym kodem co dodałeś to ja już się pogubiłem, co robisz a co chcesz uzyskać
Cinamicom
Opowiem to od początku..


$this->test('test', $this->view('test'));


1 parametr to $tags (używam go w szablonie {$nazwa}), 2 parametr to kod. To idzie do poniższego skryptu

  1. public function test($tags,$value)
  2. {
  3. if(is_array($value)) {
  4. foreach($tags as $tag => $tagvalue) {
  5. if (!empty($tag)) {
  6. $this->tags['{$'.$tag.'}'] = $tagvalue;
  7. }
  8. }
  9. } else {
  10. $this -> tags['{$'.$tags.'}'] = $value;
  11. }
  12. }


Co w efekcie prowadzi do użycia w szablonie: {$test} i wykonuje mi się kod z 2 parametru ($value)



2 parametrem mam funkcję view('test') - ona ma mi wyświetlić listę rekordów. Jeśli zrobie to tak jak w 1 poście, wyświetli mi tylko 1 rekord, bo nie jest to tablica.
Damonsson
No ok, ale co tych chcesz foreachować? String "test"? To podajesz w parametrze przecież.
Poza tym nie znam lepszego systemu szablonów niż samo w sobie PHP, ale to już rzecz gustu.
buliq
Zastanów się jeszcze raz, pomyśl, może weź kartę i długopis i sobie rozpisz ....


z ciała metody wynika:

1. podaj mi 2 parametry
2. sprawdź czy drugi jest tablicą
3. jeżeli tak to zignoruj go, bo go nie potrzebuję ale w zamian pierwszy parametr wrzuć do foreach i módl się żeby on był tablicą
4. jeżeli nie to zrób coś tam.
Cinamicom
Hmm, czyli jak powinien wyglądać taki prawidłowy kod, taki prościutki. Nie było by problemu, gdybym użył echo zamiast return. Jednakże gdy użyje echo, to ten kod nie jest w tym miejscu na stronie gdzie dałem, tylko poza wszystkimi divami.

No i nie w każdym używam foreacha.
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.