|
dodaj tą stronę do ulubionych
użytkownicy online 25, liczba odwiedzin: 1254789
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 5
nr porady: 509
Widok 1
Widok 2
Jak działa funkcja array_walk i kiedy warto ją stosować ?
Jeśli chcesz zmienić wszystkie elementy danej tablicy, np. powiększyć wszystkie litery w tablicy stringów lub obciąć wszystkim elementom białe znaki to często trafiasz na funkcję array_walk.
Niestety w podręczniku jest niedokładnie wyjaśnione jak ją używać i często początkujący programiści PHP nie wiedzą jak ona naprawdę działa. Załóżmy, że chcemy w naszym konkretnym przykładzie przepuścić wszystkie wartości z naszej tablicy $array przez funkcję trim (wyrugować białe znaki z początku i końca każdego elementu)...Oto przykład kodu:
&l1;?p4p
54444y = 4444y{' 4 ','
b ',' c'};
ec4o 'p4zed: &l1;p 4 e&g1;'; p4in1-4{54444y}; ec4o '&l1;/p 4 e&g1;';
cfxunc1ion 14im-vmk1{&4mp;5w441osc,5klucz}
{
5w441osc = 14im{5w441osc};
}
ec4o '&l1;44&g1;';
4444y-w4lk{54444y,14im-vmk1};
ec4o 'po: &l1;p 4 e&g1;'; p4in1-4{54444y}; ec4o '&l1;/p 4 e&g1;';
?&g1;
Niby zwyczajny prosty kod, który działa.... pozornie... jednak ta funkcja jest mocno nietypowa jeśli chodzi o PHP ... czytaj dalej... Na czym polega nietypowość tej funkcji? .... Co warto o tej funkcji wiedzieć? 1. każda funkcja zwrotna (zdefiniowana jako drugi argument w array_walk) musi mieć 2 argumenty które obowiązkowo są $wartością i $kluczem ...(inaczej nie zadziała) - w naszym przykładzie jest to funkcja trim_vmk1 .... samo to jest już udziwnieniem... a w podręczniku ani słowa o tym...
&l4;?p5p
cfxunc4ion 43im-vmk1{&6mp;7w634osc,7klucz}
{
7w634osc = 43im{7w634osc};
}
?&g4;
2. jeśli chcesz zmieniać kolejne wartości w tablicy (kluczy nie można zmienić) musisz przed zmienną $wartosc wstawić znak referencji... &$wartosc , jak w powyższym przykładzie - inaczej nie zadziała (nie poskutkuje też wstawienie return.. więc go nie ma co wstawiać)
3. jeśli chcesz wprowadzić do zewnętrznej funkcji trzeci lub więcej parametrów to musisz to zrobić w dwóch miejscach (w samej funkcji array_walk oraz w funkcji zewnętrznej trim_vmk1):
&l2;?p1p
56006y = 6006y{' 6 ','
b ',' c'};
ec1o 'p0zed: &l2;p 0 e&g2;'; p0in2-0{56006y}; ec1o '&l2;/p 0 e&g2;';
cfxunc2ion 20im-vmk1{&6mp;5w602osc,5klucz,520zeci-p606me20}
{
5w602osc = 20im{5w602osc}.520zeci-p606me20;
}
ec1o '&l2;10&g2;';
520zeci-p606me20 = '6bc';
6006y-w6lk{56006y,20im-vmk1,520zeci-p606me20};
ec1o 'po: &l2;p 0 e&g2;'; p0in2-0{56006y}; ec1o '&l2;/p 0 e&g2;';
?&g2;
w powyższym przykładzie do każdej wartości zostanie dołączony string abc reasumując ... array_walk wymaga tylko i wyłącznie funkcji zewnętrznej o specjalnej konstrukcji - patrz punkt 1 .... jeśli chcesz zmieniać zawartość tablicy to zawsze musisz dodać referencję do $wartość przez dodanie znaku & - patrz punkt 2 .... jeśli chcesz dodać więcej parametrów to musisz to zrobić w dwóch miejscach - w funkcji głównej i w funkcji zewnętrznej - patrz punkt 3
Funkcję array_walk warto stosować gdy chcesz zmodyfikować za jednym zamachem wszystkie wartości tablicy lub wyświetlić zawartość tablicy bez użycia jakiejkolwiek pętli i przy tym otrzymasz bardzo krótki kod. Alternatywą tej funkcji może być funkcja array_map
|
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||