kursy , szkolenia warszawa , e-book , audio book , poradniki , jak zarabiać , pieniądze , biznes , marketing e-commerce , e-biznes , zarabianie w sieci , servicetek group Bogdan Markowicz SG ,3 d e-learning , second life w edukacji , edukacja , 3d E-learning kursy i szkolenia Online |||S|G||| – Kurs PHP cz. 5 Tablice

Kurs PHP cz. 5 Tablice

Post image of Kurs PHP cz. 5 Tablice
Posted in Nowości

Kurs PHP cz. 5 Tablice

5. Tablice

5.1. Co to jest tablica?

Tablice to typy zmiennych, które służą do przechowywania innych zmiennych. Używanie tablic pomaga np. w przeglądaniu wpisów pobranych z bazy danych lub odczytanej listy plików z foldera na serwerze, gdyż można się do nich odwoływać po ich indeksach (liczby całkowite) lub identyfikatorach tekstowych (w tablicach asocjacyjnych). W wypadku identyfikatorów tekstowych należy pamiętać, że zaczynają się one od zera, gdyż często młodzi programiści popełniają tu błąd. Oto przykład przypisania trzech kolejnych wartości do tablicy $tablica.

<?
$tablica[0] = 8;
$tablica[1] = 9;
$tablica[2] = 1;
?>

Kiedy chcemy po prostu dodać nową pozycję do tablicy, wystarczy zastosować powyższy zapis, pomijając numer klucza w nawiasie kwadratowym. Dla przykładu:

<?
$tablica[] = 8;
$tablica[] = 9;
$tablica[] = 1;
?>

Elementem tablicy może być dowolna zmienna, nawet inna tablica. Gdy powstanie taka konstrukcja, tablicę nazywamy wielowymiarową i do elementu odwołujemy się poprzez zapis uwzględniający liczbę wymiarów. Dla przykładu:

<?
$tablica[0][7] = “18 małych kotków”;
echo $tablica[0][7];
$tablica[0][7]["tytuł"][2] = “Ala ma kota, a sierotka ma rysia”;
//można też wprowadzać indeksy tekstowe (patrz niżej)
i więcej niż dwa wymiary tablicy
?>

5.2. Tablice asocjacyjne

Tablice asocjacyjne to odmiany tablic, w których zamiast indeksów liczbowych występują indeksy tekstowe. Najczęstsze zastosowanie tej struktury danych prezentuje poniższy przykład. Tablica reprezentuje konkretną osobę, a wiersze to jej dane osobowe.

<?
echo $kowalski["imie"] = “Jan”;
echo $kowalski["miasto"] = “Warszawa”;
echo $kowalski["ulica"] = “Polna”;
echo $kowalski["wiek"] = 19;
echo $kowalski["kawaler"] = true;
?>

5.3. Przeglądanie tablic

Czasem będziemy potrzebowali wykonać jakąś operację na wszystkich elementach tablicy. np. porównać ze wzorcem. W wypadku zwykłej tablicy (gdy znamy liczbę jej elementów) wystarczy użyć pętli FOR i następującej konstrukcji:

<?
for ($i=0;$i<10;$i++) {
echo $tablica[$i];
}
?>

Lecz jeśli nie znamy liczby elementów tablicy, bo jest ona zmienna i zależy np. od wprowadzonych wcześniej informacji, należy posłużyć się funkcją sizeof(). Podając jako argument nazwę tablicy, otrzymamy liczbę jej elementów. Dla przykładu:

<?
for ($i=0;$i<sizeof($tablica);$i++) {
echo $tablica[$i];
}
?>

Nieco bardziej skomplikowane jest przeglądanie tablicy asocjacyjnej, ale i tutaj użyteczne są dwie konstrukcje. Dla przykładu:

<?
foreach ($tablica as $klucz => $wartosc) {
echo “$klucz => $wartosc <br />”;
}
?>
<?
while( list($klucz, $wartosc) = each($tabliczka) )
echo “$klucz => $wartosc<br />”;
}
?>

W pierwszym przykładzie kod zwraca dla każdej iteracji pętli parę zmiennych: $klucz i $wartosc. Zawierają one odpowiednio nazwę klucza i jego wartość. W drugiej konstrukcji należy wyjaśnić funkcje list() i each().

  • list() ? podobnie jak array(), list() nie jest tak naprawdę funkcją, ale elementem składni języka. Używamy list(), aby przypisać listę zmiennych do funkcji zwracającej tablicę wyników (np. explode()),
  • each() ? zwraca bieżącą parę klucza i wartości z tablicy oraz przesuwa kursor tablicy (wewnętrzny wskaźnik tablicy). Aby odczytać tablicę ponownie, używając each(), należy użyć funkcji reset(), co spowoduje powrót na początek tablicy.

Zatem each() zwraca tablicę, w której na pierwszej pozycji jest klucz, a na drugiej wartość, list() natomiast przechwytuje ją i zapisuje do dwóch zmiennych.

5.4. Zamiana tablic na stringi i odwrotnie

Zdarza się, że ciąg znaków trzeba zamienić na tablicę (chociażby przy odczytywaniu danych z pliku). Potrzebna jest wówczas funkcja explode(). Jak sama nazwa wskazuje, funkcja ta rozdziela określony ciąg znaków i tworzy z powstałych elementów tablicę. Funkcja pobiera dwa argumenty: ciąg znaków lub znak, który stanowi element rozdzielający, a także zmienną zawierającą ciąg, który chcemy rozdzielić. Dla przykładu:

<?
$wpisy = explode(”|”, $odczyt);
?>

Wywołanie takie zwróci tablicę o nazwie $wpisy z pojedynczymi elementami, które były w oryginalnym ciągu rozdzielone symbolem |.
Elementy tablicy można również tablicę połączyć określonym znakiem (aby je np. zapisać w pliku). Służy do tego funkcja implode(). Pobiera ona dwa argumenty. Pierwszy to ciąg, którymi mają być połączone elementy tablicy, a drugi to nazwa zmiennej tablicy z danymi.

<?
$doZapisu = implode(”|”, $wpisy);
?>

5.4.1. Sortowanie tablic

Do sortowania tablic ? zarówno zwykłych, jak i asocjacyjnych ? napisano wiele funkcji. Poniżej opisujemy sposób działania najważniejszych.

  • asort() ? sortuje rosnąco tablice asocjacyjne według wartości kluczy, zachowując przypisanie kluczy do wartości,
  • arsort() ? sortuje malejąco tablice asocjacyjne według wartości kluczy, zachowując przypisanie kluczy do wartości,
  • ksort() ? sortuje rosnąco tablice asocjacyjne według kluczy, zachowując przypisanie kluczy do wartości,
  • krsort() ? sortuje malejąco tablice asocjacyjne według kluczy, zachowując przypisanie kluczy do wartości,
  • sort() ? sortuje rosnąco zwykłe tablice,
  • rsort() ? sortuje malejąco zwykłe tablice,
  • uasort() ? funkcja sortująca tablice asocjacyjne za pomocą zdefiniowanej przez użytkownika funkcji porównującej elementy (nazwa funkcji jest podawana za pomocą drugiego parametru),
  • usort() ? funkcja sortująca zwykłe tablice za pomocą funkcji zdefiniowanej przez użytkownika,
  • uksort() ? funkcja sortująca tablice asocjacyjne według klucza za pomocą funkcji zdefiniowanej przez użytkownika.

5.4.2. Inne przydatne funkcje

  • array_change_key_case (array wejście [, int wielkość]) ? zmienia klucze w tablicy wejście, tak aby były one pisane tylko dużymi lub tylko małymi literami. Zmiana zależy od ostatniego opcjonalnego parametru case. Można do niego przekazać jedną z dwóch stałych: CASE_UPPER lub CASE_LOWER. Domyślną wartością jest CASE_LOWER. Indeksy liczbowe będą pozostawione,
  • array_flip (trans) ? zwraca tablicę w odwróconym porządku, tzn. klucze z tabeli trans stają się wartościami, a wartości trans stają się kluczami. Zauważmy, że wszystkie wartości tablicy trans muszą mieć poprawne klucze, tzn. muszą być albo typu integer, albo string. Jeśli wartość nie ma prawidłowego typu, wyświetlone zostanie ostrzeżenie, a para klucz i wartość nie będzie odwrócona,
  • array_fill (indeks_początkowy, num, wartość) ? wypełnia tablicę wartością wartość, począwszy od indeksu indeks_początkowy przez num kolejnych elementów tablicy,
  • array_pop (tablica) ? zdejmuje i zwraca ostatnią wartość tablicy tablica, skracając tę tablicę o jeden element. Jeśli tablica jest pusta (lub nie jest tablicą), zwracana jest wartość NULL,
  • array_push (tablica, wartosc [, wartosc ...]) ? traktuje zmienną tablica jako stos i wstawia przekazane parametry na koniec podanej tablicy. Długość parametru tablica zwiększa się o liczbę przekazanych wartości. Funkcja zwraca nową liczbę elementów tablicy,
  • array_shift (tablica) ? usuwa pierwszą wartość parametru tablica i zwraca go, skracając tę tablicę o jeden element i przesuwając wszystkie pozostałe elementy w dół. Jeśli tablica jest pusta (lub nie jest tablicą), zwracana jest wartość NULL,
  • array_unshift ( tablica, wartość, [wartosc...]) ? wstawia jeden lub więcej przekazanych jako parametry elementów na początek tablicy tablica. Zauważmy, że lista elementów jest wstawiana jako całość, więc elementy zostają w takim samym porządku. Funkcja zwraca nową liczbę elementów w tablicy tablica,
  • array_search (igła, stóg_siana [, ścisły]) ? przeszukuje stóg_siana w poszukiwaniu parametru igła i zwraca odpowiedni klucz, jeśli został on znaleziony, lub FALSE w przeciwnym wypadku. Jeżeli trzeci parametr ścisły jest ustawiony na TRUE, to array_search() porówna także typy parametru igła z tymi z parametru stóg_siana.
Posted by Bogdan Markowicz   @   2 Listopad 2009

Like this post? Share it!

RSS Digg Twitter StumbleUpon Delicious Technorati Facebook

0 Comments

Comments
lis 23, 2009
19:39
#1 zajefajnyx :

Chcemy wiecej :D

Leave a Comment

Name

Email

Website

Previous Post
« Plagiat, czyli cienka czerwona linia pomiędzy cytowaniem a przestępstwem
Next Post
Firmy windykacyjne nie mogą stosować przymusu »
Pismo nalezy do Servicetek Group   |   SG e-biznes e-commerce projektowanie www designed by SG Grupa e-learning