PHP - przydatne funkcje związane z tablicami
| DZIAŁANIE: |
Tablica na początku : NowaMuza --> www.nowamuza.pl psd --> www.psd-team.org kurs php --> www.php.praktyka.prv.pl Funkcja array_rand zwraca : www.php.praktyka.prv.pl Funkcja array_search zwraca : NowaMuza Funkcja array_reverse kurs php --> www.php.praktyka.prv.pl psd --> www.psd-team.org NowaMuza --> www.nowamuza.pl Funkcja shuffle 0 --> www.psd-team.org 1 --> www.php.praktyka.prv.pl 2 --> www.nowamuza.pl Tablica liczb nieparzystych do 10 : 1 3 5 7 9 Tablica liczb nieparzystych od 9 w doł : 9 7 5 3 1 Malejące od 10 : 10 9 8 7 6 5 4 3 2 1 Element nr 0 tablicy po konwersji intval to : 0 Element nr 1 tablicy po konwersji intval to : 212 Element nr 2 tablicy po konwersji intval to : 0 Element nr 3 tablicy po konwersji intval to : 333 Element nr 4 tablicy po konwersji intval to : 3232 Funkcja current : janek Funkcja next : marek Funkcja reset janek Funkcja end maryska Funkcja prev ola Funkcja current : ola Funkcja array_walk prosty przykład : janek marek gienek ola maryska Funkcja array_walk trudniejszy przykład : Wynik to : 5 Wynik to : 25 Wynik to : 40 Wynik to : 500 Wynik to : 500105 Wynik to : 40 Wynik to : 80 Wynik to : 5 Wynik to : 40 Wynik to : 40 Funkcja array_count_values : Liczba 5 występuje 2 razy Liczba 25 występuje 1 razy Liczba 40 występuje 4 razy Liczba 500 występuje 1 razy Liczba 500105 występuje 1 razy Liczba 80 występuje 1 razy Funkcja extract prosty przykład : Bartek Czesiek Gienia Funkcja extract trudniejszy przykład : Bartek Czesiek Gienia |
Kod:

Ewentualne Objaśnienia:
Niedawno pokazałem Wam funkcję array_search oraz array_rand - wspominałem o nich w przykładzie 163download02 . Tutaj w przykładzie pokazuje raz jeszcze jak one działają oraz przedstawiam kilka nowych.
1). Po pierwsze to sposób na wyświetlanie tablicy asocjacyjnej za pomocą funkcji list - tego wcześniej nie pokazywałem. Funkcja list jak się domyślacie zmiennym, które są jej argumentami nadaje odpowiednie wartości, inna możliwość zastosowania to na przykład : list ($zmienna1, $zmienna2) = explode("|",$plik) . Takie przedstawienie tablicy jest bardzo eleganckie można powiedzieć :)
2). Dalej mamy funkcję array_rand - jak już wiecie losuje element tablicy podany jako jej argument - tzn konkretnie losuje oczywiście nazwę klucza jak to widać z przykładu
3). Kolejna to array_search - jak sie domyślacie i już wiecie sprawdza czy w tablicy określonej 2 parametrem jest wartość określona 1 parametrem, jeśli tak zwraca nazwę/numer klucza - co też widać na przykładzie
4). Funkcja array_reverse - bardzo przydatna funkcja, która jak widać pobiera tablicę o tworzy nową o tych samych elementach lecz umieszczonych w odwrotnej kolejności
5). Funkcja shuffle - jak widzicie zmienia ona kolejność elementów w naszej tablicy - przydatne gdybyśmy chcieli zawsze wyświetlać jakieś 3 elementy z tablicy ( losowe ) więc zamiast losować klucz można ustalić stałe klucze natomiast losowo ustalać elementy w tablicy
6). Funkcja range - tworzy nam tablicę o wartościach podanych w parametrach - od parametru 1 do 2, 3 jest opcjonalny. Parametr trzeci oznacza 'skok' w wartościach - w naszym przykładzie jak łatwo się domyślić tworzy tablicę o wartościach od 1 do 10 - o skoku co 2, czyli 1,3,5 itd
7). To również range tyle, że jakby w odwrotnej kolejności - malejącej, 3 parametr ma wartość ujemną
8). No i funkcja array_push - dodaje ona elementy na końcu tablicy ( jej przeciwieństwo to array_pop ). W przykładzie widać, że chcemy w tablicy umieścić liczby od 10 do 1 - więc w pętli for musimy zmienną $i mieć na początku równą 10 i dalej ją dekrementować - ale nie możemy jej użyć jako klucz tablicy do wpisania wartości i dlatego używamy tutaj array_push - pierwszy argument oznacza do jakiej tablicy ma wpisać na ostatni element, a drugi jaką wartość. Równie dobrze można było zapisać $malejace[] = $i . Efekt taki sam, ale warto pamiętać o takiej funkcji jak array_push .
9). Funkcja intval - to tak naprawdę nie jest jakaś funkcja tablicowa, ale wspominam tutaj o niej - jest to nic innego jak funkcja służąca do zmieniania typu string na integer ( ciąg znaków na liczbę całkowitą ) - co też widać elegancko na przykładzie ;)
10). Funkcja current - tutaj wywołana 2 razy aby pokazać jak rzeczywiście działa - czyli jak widać zwraca aktualny element tablicy ( określa to wskaźnik tablicy )
11). Funkcja next - przechodzi do następnego elementu oraz go wyświetla ( each pierw zwraca aktualny element przed przeskokiem do następnego )
12). Reset - przesuwa wskaźnik do 1 elementu tablicy i zwraca go
13). End - ( już ją znacie ) przesuwa wskaźnik na koniec tablicy ( ostatni element ) i zwraca go ( element )
14). Prev - przesuwa wskaźnik o 1 element wstecz i zwraca nowy aktualny element
15). Funkcja array_walk - służy nam do tego aby na danej tablicy
wykonać ( na każdym elemencie ) takie samo działanie.
Składnia : array_walk(
tablica,funkcja,dane_uzytkownika(opcjonalny parametr) ) . 1 arg to nasza
funkcja, na której chcemy dokonać modyfikacji, 2 arg to nasza funkcja, która
zostanie zastosowana do każdego elementu tablicy. 3 arg opcjonalny - jest on
przekazywany jako parametr do naszej funkcji - arg 2 .
Nasz pierwszy przykład generalnie nie potrzebuje parametru 3, nie wykonuje
również żadnych operacji na kluczach tablicy - po prostu nasza funkcja po każdej
wartości umieszcza HTMLowy znak nowego wiersza .
Drugi przykład jest powiedzmy "skomplikowany" - tutaj nasza funkcja mająca za
zadanie pomnożyć każdy element naszej tablicy przez liczbę 5 posiada 3 parametry
- tak naprawdę 2 parametr czyli klucz tablicy nie jest nam do niczego potrzebny,
ale musimy go umieścić aby dalej zdefiniować parametr 3 . Jak widać funkcja
mnoży każdy element - wartość przez liczbę 5.
W wywołaniu funkcji array_walk określamy tablicę, funkcję oraz 3 parametr czyli
będzie on przekazany do naszej funkcji czyli jest to liczba przez jaką mnożymy
tablicę .
Widzimy, że wartość w funkcji mnożenia jest przekazywana przez referencję czyli
wartości w tablicy zostaną na stałe zmienione - dalej będę korzystał z tej
tablicy co też będzie widoczne
16). Również pokazałem ( chyba już wspominałem ale nie pamiętam ), że funkcja sizeof podobnie jak count zwraca ilość elementów danej tablicy
17). Funkcja array_count_values - świetna funkcja dzięki, której możemy obliczyć ile niepowtarzalnych wartości znajduje się w danej tablicy (kardynalność tablicy). Funkcja zwraca nam tablicę asocjacyjną gdzie gdzie klucze są wszystkimi pojedynczymi (unikalnymi) wartościami (tablicy na której użyliśmy funkcji array_count_values) a ich wartości odpowiadają częstości występowania - jeśli wydaje Ci się to nieczytelne zobacz na przykład widać jak na dłoni :)
18). Funkcja extract - pobiera ona tablicę i tworzy wartości skalarne
(zmienne) o nazwach takich jak klucze tablicy - widać to świetnie na
przykładzie.
Składnia : extract ( tablica,typ_ekstrakcji(opcjonalny),
przedrostek(opcjonalny) ) .
Może pojawić się taki problem, że klucz tablicy będzie mieć taką nazwę jak już
istniejąca zmienna więc funkcja extract po prostu domyślnie taką zmienną
nadpisze. No i to oczywiście bardzo niedobrze ! Dlatego jest takie coś jak 2 arg
czyli typ ekstrakcji, które określają co robić w wypadku takiego problemy .
Najbardziej przydatne typy to :
- EXTR_OVERWRITE - w wypadku kolizji nadpisanie istniejącej zmiennej
- EXTR_PREFIX_ALL - przed wszystkimi nazwami nowych zmiennych dodawany jest
przedrostek, określony 3 parametrem funkcji extract
No i właśnie w 2 przykładzie funkcji extract widać to - określamy, że ma zostać dołączony przedrostek oraz określamy go jako naszPrzedrostek. Dalej już tylko odwołujemy się do zmiennych o budowie $przedrostek_nazwaklucza , czyli u nas na przykład $naszPrzedrostek_Szef .
Omówiłem tutaj troszkę bardzo przydatnych i ważnych funkcji tablicowych PHP. Oczywiście nie są to wszystkie, ale zalecam zapamiętanie tych i opanowanie poprzez własne przykłady to naprawdę jest pomocne :)