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 :)