Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Jak utworzyć funkcję z { }
colargol
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 24.02.2009

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


Chciałbym utworzyć funkcję 'loop', aby można ją było użyć w kodzie z { }:

(taką zmodyfikowaną wersję "for(){ }")

loop($x=0;$x<=5){
echo $x.'.';
//do something
}

Która w tym przypadku wyświetli: 0.1.2.3.4.5.

"Loop" to jest tylko przykładowa funkcja, chciałbym się dowiedzieć jak się tworzy tego typu funkcje.

Jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W systemie szablonow?
W php nie zrobisz tak o. Chyba ze zmodyfikujesz kod całego php.
A po co ci to?
Go to the top of the page
+Quote Post
colargol
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 24.02.2009

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


Cytat(wookieb @ 16.03.2009, 01:04:15 ) *
A po co ci to?


Np. bardzo często używam konstrukcji:
Kod
   for($x=0;$x<count($abc);$x++){ }

i mógłbym zamienić ją na choćby:
Kod
   loop($x;$abc){ }


jak dla mnie szybsze w pisaniu i bardziej przejrzyste
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie da się.
Go to the top of the page
+Quote Post
zelu
post
Post #5





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Mozesz napisac wlasna funkcje loop, ktora robi to co chcesz na podstawie okreslonych przez Ciebie danych, pozniej zapisac ja w osobnym pliku. Potem w skrypcie, w ktorym chcesz go uzyc dajesz na poczatku include('plik.php'); i uzywasz tej funkcji jak kazdej innej PHPowej


pozdro

Ten post edytował zelu 16.03.2009, 09:32:42
Go to the top of the page
+Quote Post
decha-design
post
Post #6





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

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


Cytat(wookieb @ 16.03.2009, 08:22:12 ) *
Nie da się.


A niby dlaczego? Co za problem do funkcji dać pętle for, i później jej wynik zwrócić w returnie? o.O'
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(decha-design @ 16.03.2009, 09:43:48 ) *
A niby dlaczego? Co za problem do funkcji dać pętle for, i później jej wynik zwrócić w returnie? o.O'

A czy ty nie widzisz, że on chce stworzyć nie o tyle co funkcje tylko nową składnię pętli?

Ten post edytował wookieb 16.03.2009, 09:51:31
Go to the top of the page
+Quote Post
decha-design
post
Post #8





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

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


No tak, racja ... tego nie nie można ...

Ten post edytował decha-design 16.03.2009, 10:05:17
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #9





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Co do samej pętli - daj liczenie poza pętlę, będzie sporo szybciej przy większej ilości iteracji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
ucho
post
Post #10





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


Dlaczego po prostu nie użyć foreach?
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Jak wyzej, po prostu foreach, i w php nie da sie przekazywac blokow kodu jako parametru.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #12





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Foreach jest wolniejsze. Co do bloków kodu - można użyć eval, ale dla mnie to będzie raczej utrudnianie niż ułatwianie sobie życia.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat(Mephistofeles @ 16.03.2009, 12:50:34 ) *
Foreach jest wolniejsze.


To zes wymyslil, odpal sobie

  1. <pre><?php
  2.  
  3. $a = range( 0, 100000 );
  4. $s1 = microtime(true);
  5. foreach ( $a as $x )
  6. {
  7.    echo $x . " ";
  8. }
  9. $e1 = microtime(true);
  10.  
  11.  
  12.  
  13. $s2 = microtime(true);
  14. for( $i = 0; $i < count($a); $i++)
  15. {
  16.    echo $a[$i] . " ";
  17. }
  18. $e2 = microtime(true);
  19.  
  20. print('<hr />');
  21. printf('foreach: %.4f<br />', ($e1-$s1) );
  22. printf('for    : %.4f<br />', ($e2-$s2) );
  23. ?>
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #14





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie wymyśliłem - tak przeczytałem na jakiejś stronie, jak znajdę to ci pokażę. Poza tym miałem na myśli liczenie elementów tablicy przed pętlą, co ją trochę przyspieszy.
Edit: No dobra, sprawdzałem, chyba masz rację, ja tylko pisałem co czytałem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Sytuacja natomiast się odwraca gdy foreacha robisz z kluczem, wtedy jest o 10 ms wolniejszy u mnie.
Edit2: A jednak! Wiedziałem, że o czymś zapomniałem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . Trzeba ++ dać przed zmienną, wtedy PHP nie tworzy tymczasowej zmiennej na wartość przed inkrementacją.
Wyniki:
foreach: 0.0612
for ++ : 0.0605
++ for : 0.0500

Ten post edytował Mephistofeles 16.03.2009, 17:14:25
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: 23.08.2025 - 20:36