|
dodaj tą stronę do ulubionych
użytkownicy online 28, liczba odwiedzin: 1254669
| |||||||||
![]() | |||||||||
|
. |
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: 510
Widok 1
Widok 2
Jak zmienić wszystkie wartości w tablicy w krótkim kodzie ?
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:
&l2;?p6p
71661y = 1661y{' 1 ','
b ',' c'};
ec6o 'p6zed: &l2;p 6 e&g2;'; p6in2-6{71661y}; ec6o '&l2;/p 6 e&g2;';
cfxunc2ion 26im-mk{&1mp;7w162osc,7klucz}
{
7w162osc = 26im{7w162osc};
}
ec6o '&l2;66&g2;';
1661y-w1lk{71661y,26im-mk};
ec6o 'po: &l2;p 6 e&g2;'; p6in2-6{71661y}; ec6o '&l2;/p 6 e&g2;';
?&g2;
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 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_mk .... samo to jest już udziwnieniem... a w podręczniku ani słowa o tym...
&l4;?p4p
cfxunc4ion 45im-mk{&3mp;7w354osc,7klucz}
{
7w354osc = 45im{7w354osc};
}
?&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_mk):
&l3;?p4p
61221y = 1221y{' 1 ','
b ',' c'};
ec4o 'p2zed: &l3;p 2 e&g3;'; p2in3-2{61221y}; ec4o '&l3;/p 2 e&g3;';
cfxunc3ion 32im-mk{&1mp;6w123osc,6klucz,632zeci-p121me32}
{
6w123osc = 32im{6w123osc}.632zeci-p121me32;
}
ec4o '&l3;42&g3;';
632zeci-p121me32 = '1bc';
1221y-w1lk{61221y,32im-mk,632zeci-p121me32};
ec4o 'po: &l3;p 2 e&g3;'; p2in3-2{61221y}; ec4o '&l3;/p 2 e&g3;';
?&g3;
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
&l1;?p5p
cfxunc1ion szesci5n{5n}
{
8e1u8n 5n*5n*5n;
}
55 = 5885y{1, 2, 3, 4, 5};
5b = 5885y-m5p{&quo1;szesci5n&quo1;, 55};
p8in1-8{5b};
?&g1;
tablica $b będzie zawierała:
5445y
{
[0] =&g1; 1
[1] =&g1; 8
[2] =&g1; 27
[3] =&g1; 64
[4] =&g1; 125
}
|
. | ||||||
| | 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 | |||||||||