Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tworzenie funkcji...
Forum PHP.pl > Forum > Przedszkole
Volume
Mam taki przypadek ze pare razy w skrypcie musze powtorzyc pewne funkcje i chcialem sobie uproscic sprawe tworzac funkcje, ale widze ze tak to nie dziala bo nie ma efektow:/

  1. function tekst($z)
  2. {
  3. $z=substr($z, 0, 20); // max dlugosc ciagu
  4. $z=wordwrap($z, 3, " ", true); // max dlugosc jednego slowa
  5. // itp.
  6. }
  7.  
  8. $tresc='Jakas tresc ';
  9. tekst($tresc);
  10. echo $tresc;

Brakuje mi pomysłu jakby to zrobić aby zadziałało....
magnus
A o czymś takim jak 'return' słyszał? smile.gif
Kamil Pietrzak
a nie
$tresc = tekst($tresc); zamiast teksti($tresc); ?
ale to tak poza tematem
a tak poza tematem to powiem Ci... ^^ lepiej dac od razu echo tekst($tresc);

mozesz to dac z return
lub zrobic funkcje ktora od razu wyswietla

function hehe($hihi) {
echo $hihi;
}

hehe('bla bla bla');
Volume
No tak wyswietlilem efekt juz wew tej funkcji, to chyba najlepszy soposob.
  1. <?php
  2. function tekst($zt)
  3. {
  4. $zt=substr($zt, 0, 20); // max dlugosc ciagu
  5. $zt=wordwrap($zt, 3, " ", true); // max dlugosc jednego slowa
  6. echo $zt;
  7. }
  8.  
  9. $tresc='Jakas tresc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
  10. tekst($tresc);
  11. ?>


A o return slyszalem ale tylko z jednej funkcji wewnatrz tej mojej tekst() udawalo mi sie wyswietlic.

  1. <?php
  2. function tekst($zt)
  3. {
  4. return substr($zt, 0, 20); // max dlugosc ciagu
  5. return wordwrap($zt, 3, " ", true); // max dlugosc jednego slowa
  6.  
  7. }
  8.  
  9. $tresc='Jakas tresc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
  10. $tresc=tekst($tresc);
  11. ?>
thek
Bo funkcja kończy się zaraz po pierwszym return. Można to porównać do break w pętlach. Po napotkaniu go wyskakujesz z pętli i to samo jest z return. Jeśli chcesz zwrócić więcej niż jedną rzecz, to musisz w return zwrócić obiekt mający wiele pól lub uzupełnioną tablicę.
Tutaj masz banał, bo zwracasz tylko jedną zmienną, a możesz przypisać do $zt efekt substr, a potem wordwrapa.
Efektywny kod funkcji to więc
  1. function tekst($zt) {
  2. return wordwrap ( substr( $zt, 0, 20 ), 3, " ", true );
  3. }
co jest równoznaczne z
  1. function tekst($zt) {
  2. $zt = substr( $zt, 0, 20 );
  3. return wordwrap ( $zt, 3, " ", true );
  4. }

EDIT: Opcjonalnie zawsze możesz używać referencji, ale to już jest nieco bardziej ryzykowne z racji na jej właściwości, które mogą Cię zaskoczyć jeśli nie będziesz uważać co robisz.
Mephistofeles
Echo wewnątrz funkcji to nie jest dobry pomysł, ale zależy co taka funkcja robi. Funkcja powinna zwracać wynik, a nie go wyświetlać. Co innego gdy sama funkcja w systemie odpowiada za wyświetlenie winksmiley.jpg.
Kamil Pietrzak
heh, podsunalem ten pomysl, moze troche abys lepiej zrozumial
ale tez nei uwazam tego za dobre rozwiazanie

po prostu masz tak

function hehe($text)
{
return $text.', hol hol powiedzial swiety mikolaj';
}

echo hehe('macie bimber ?');

daj to do pliku, zapisz, wyslij na serwer i odpal
pozniej edytuj, az zalapiesz ogolna zasade ;>
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.