Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
PHP. Programowanie
w systemie Windows
Autor: Andrew Stopford
Tumaczenie: Aleksandra Kula
ISBN: 83-7197-915-0
Tytu oryginau: PHP Programming for Windows
Format: B5, stron: 290
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
5RKUVTGEK
Co to jest PHP? ......................................................................................................................18
Jak powsta PHP?...................................................................................................................18
Czym jest Open Source?........................................................................................................20
Projektowanie w PHP a projektowanie wykorzystujce technologie ASP i ColdFusion?....20
Kto odpowiada za dalszy rozwj PHP? .................................................................................21
PHP dzisiaj.............................................................................................................................22
Przyszo PHP ......................................................................................................................22
Podsumowanie .......................................................................................................................23
!
"
Planowanie instalacji PHP .....................................................................................................25
Pobieranie PHP z witryny......................................................................................................26
Instalowanie PHP...................................................................................................................28
Optymalizowanie instalacji....................................................................................................44
Rozwizywanie problemw z instalacj................................................................................51
Podsumowanie .......................................................................................................................51
#
$!
""
Narzdzia do tworzenia aplikacji w PHP ..............................................................................55
Podstawy skadni PHP ...........................................................................................................56
Zmienne .................................................................................................................................57
Operatory logiczne i ptle......................................................................................................68
Tablice ...................................................................................................................................74
Kod strukturalny i kod wielokrotnego uytku .......................................................................80
Podsumowanie .......................................................................................................................86
%
&
'
Funkcje PHP obsugi plikw i katalogw..............................................................................87
PHP i pliki..............................................................................................................................87
PHP i katalogi ........................................................................................................................97
Podsumowanie .....................................................................................................................104
"
("
Sesje PHP.............................................................................................................................105
PHP a sesje WDDX .............................................................................................................110
Podsumowanie .....................................................................................................................120
)
* +
Metody PHP tworzenia zapyta do bazy danych ................................................................121
Wsppraca z baz danych...................................................................................................123
Przekazywanie zapytania do bazy z wykorzystaniem ODBC i PHP...................................123
Przesyanie zapytania bezporednio do bazy z wykorzystaniem PHP ................................128
Podsumowanie .....................................................................................................................151
,-.
/01
""
Wszystko na temat technologii COM..................................................................................155
PHP i .NET ..........................................................................................................................163
Podsumowanie .....................................................................................................................169
'
2.3
Krtka historia XML-a ........................................................................................................171
Czym jest XML?..................................................................................................................172
Wywietlanie dokumentw w jzyku XML ........................................................................173
Z czego skada si jzyk XML?...........................................................................................173
Struktura jzyka XML .........................................................................................................177
Korzystanie z PHP i XML ...................................................................................................178
Formatowanie dokumentw XML za pomoc PHP i XSL .................................................186
Podsumowanie .....................................................................................................................190
$
Z czego skadaj si usugi WWW? ....................................................................................191
Przyszo usug WWW ......................................................................................................199
Korzystanie z PHP do tworzenia usug WWW ...................................................................199
Podsumowanie .....................................................................................................................208
(
4
(
Historia ADO.......................................................................................................................209
Czym jest ADO dla programisty PHP? ...............................................................................211
Instalowanie ADO ...............................................................................................................211
Wsppraca pomidzy PHP i ADO .....................................................................................211
ADODB i PHP.....................................................................................................................232
Podsumowanie .....................................................................................................................234
5 4
#"
Co to jest katalog X.500?.....................................................................................................235
Czym jest LDAP? ................................................................................................................236
Czym jest Active Directory?................................................................................................236
Korzystanie z Active Directory ...........................................................................................238
Korzystanie z PHP w poczeniu z Active Directory ..........................................................238
Podsumowanie .....................................................................................................................262
!"#
4 & 1 6 47-
)"
4 &7
#
8&
Rozdzia 3.
Teraz, kiedy ju zainstalowae PHP, moesz zacz projektowa aplikacje z jego wykorzystaniem. W tym rozdziale dowiesz si, od czego zacz, projektujc aplikacje dla WWW,
oraz zapoznasz si z rnymi typami danych i strukturami skadajcymi si na jzyk.
Zanim zaczniesz programowa w PHP, potrzebny Ci bdzie program do pisania, edytowania i zapisywania skryptw. Moesz korzysta z aplikacji Notatnik, jednak dostpne
s rwnie inne programy oferujce takie funkcje jak podwietlanie skadni kodu oraz
testowanie i uruchamianie. Omwimy to w kolejnych punktach.
Edytor typu open-source, PHP Edit, oferuje podwietlanie kodu w rnych kolorach, testowanie go oraz dostp do dokumentacji funkcji oraz obiektw i inne.
Wicej informacji, jak rwnie samo narzdzie, znajdziesz na stronie http://www.
phpedit.com/.
Macromedia HomeSite to edytor HTML obsugujcy technologi ASP, ColdFusion i PHP.
Obsuga kolorowego podwietlania poszczeglnych elementw kodu jest wbudowan
funkcj HomeSite, ale dostp do innych funkcji, takich jak dokumentacja skadni, jest
moliwy jedynie przy wykorzystaniu narzdzi innych firm.
Wicej informacji i testow wersj moesz pobra z witryny http://www.macromedia.com/
software/homesite/.
Dodatki do programu Macromedia HomeSite przeznaczone do programowania w PHP
mona pobra ze strony http://www.wilk4.com/asp4hs/php4hs.htm.
Narzdzie dostpne jest zarwno dla platformy Windows, jak i Linux. ActiveState Komodo to popularny edytor. Obsuga PHP jest wbudowan funkcj narzdzia umoliwiajc podwietlanie w rnych kolorach skadni oraz zdalne testowanie i uruchamianie kodu.
Wicej informacji i testow wersj ActiveState Komodo mona pobra z http://www.
activestate.com/Products/Komodo/.
Zend IDE to narzdzie zbudowane w oparciu o jzyk Java, ktre zawiera obsug podwietlania w rnych kolorach skadni, jak rwnie rozbudowane funkcje zdalnego testowania i uruchamiania. Wicej informacji i testow wersj narzdzia znajdziesz na stronie
http://www.zend.com/store/products/zend-ide.php.
Podobnie jak ASP, PHP wykorzystuje co, co osobicie nazywam otwierajco-zamykajcym nawiasem (z ang. open-close bracket). W klasycznym ASP program rozpoczyna
si od znacznika pocztku programu (), a koczy si znacznikiem koca programu ():
PHP dopuszcza rwnie skadni dobrze znan programistom tworzcym aplikacje uruchamiane po stronie klienta. Skadnia ta rozpoczyna si poleceniem
,
a koczy poleceniem
:
"#$%&'(')*
!
+"#$
Jeli masz dowiadczenie w projektowaniu w ASP, nie musisz si obawia. PHP pozwala
wykorzystywa skadni ASP:
Aby jednak taka skadnia bya poprawna, musisz zmieni wpis w pliku php.ini:
,
*-
Wieloliniowe programy tworzone w PHP wymagaj uycia dodatkowego znaku:
$.
/.
!
!
Zauwa, e PHP wymaga uycia operatora zamykajcego lini znaku rednika ().
Jeli uruchomisz program, w ktrym nie ma znacznika koca linii, jak w poniej przedstawionym przykadzie, pojawi si informacja o bdzie
!"#
$%&$'():
$.
/.
Jeli nigdy nie uywae znakw koca linii, moesz czasami o nich zapomina. Jeli
pojawi si wiadomo
podczas tworzenia aplikacji dla WWW, sprawd, czy
nie brakuje znaku koca linii w wierszu o numerze podanym przez komunikat o bdzie,
jak pokazano na rysunku 3.1.
Wiadomo
o bdzie Parse error
PHP jest okrelany jako jzyk lunych deklaracji. Oznacza to, e nie musisz deklarowa
typu zmiennych przed ich uyciem. PHP przypisuje w Twoim imieniu typy zmiennych.
Aby to zrozumie, przyjrzyj si nastpujcemu przykadowi:
++
0
1
0
*2!
10340
*5 66!
1
0
*0.!
140
*$()!
++0.
0
1#
$*
1
0
!
71
0
.
31#
$8!
1934$*
10340
!
710340
.
31934$8!
1
$*
1
0
!
71
0
.
301
$8!
18$*
140
!
7140
.
3018$8!
Jeli zapiszesz dane jako zmienn, PHP przypisuje typ zmiennej zgodnie z typem zapisanych w niej danych. Najpierw podaj, jakie dane bd przechowywane w zmiennej:
1
0
:*2!
10340
:*5 66!
1
:*0.!
14:*$()!
PHP nadaje zmiennej typ odpowiadajcy danym zapisanym w zmiennej. Na przykad, poniewa do zmiennej *%('+, przypisana jest warto Andrzej, PHP nada tej zmiennej
typ %('+. Moesz to sprawdzi, wywietlajc typ zmiennej za pomoc funkcji %-:
1#
$*'
$1
0
:!
Jeli uruchomisz ten skrypt, zobaczysz takie wyniki, jakie pokazano na rysunku 3.2.
Zwr uwag, e zmienna typu .' jest wywietlana jako /. PHP wywietla zmienne
typu .' jako /, jeli zmienna ma warto , i jako '0.. (warto pusta), jeli zmienna ma warto 1. Przyjrzymy si temu dokadniej w dalszej czci tego rozdziau.
Podobnie jak w pierwszym przykadzie, przypisalimy zmiennym wartoci i wywietlilimy zawarto tych zmiennych oraz ich typ:
1
0
*;66!
10340
*5 66!
1
*<!
14*$()!
1#
$*
1
0
!
71
0
.
31#
$8!
1934$*
10340
!
710340
.
31934$8!
1
$*
1
!
71
.
31
$8!
18$*
14!
714.
318$8!
Nastpnie moliwa jest zmiana typu kadej ze zmiennych za pomoc funkcji %-:
$10340
>
!
$1
0
>034!
$14>
!
$1
>4!
Jako argumenty funkcji %- podaj nazw zmiennej, ktrej typ chcesz zmieni (jak
na przykad *#0 .#%), a nastpnie typ danych, na ktry typ zmiennej ma zosta zmieniony (na przykad ('%+). Na kocu moesz wywietli wartoci i nowe typy zmiennych:
1#
$*
1
0
!
71
0
.
31#
$8!
1934$*
10340
!
710340
.
31934$8!
1
$*
1
!
71
.
31
$8!
18$*
14!
714.
318$8!
Jeli uruchomisz ten skrypt, zobaczysz, e typy zmiennych zostay zmienione zgodnie
z wydanymi poleceniami, jak pokazano na rysunku 3.3.
Wykorzystanie funkcji
SetType do zmiany
typu zmiennej
O ile zamiana zmiennych typu ('%+
i #0 . nie stanowia wikszego problemu, to
zamiana zmiennych typu .' i %('+ bya wikszym wyzwaniem. Wywietlone wyniki
pokazuj, e zmienna typu %('+ ma warto /. Jest to zgodne z zasadami wywietlania
przez PHP zmiennych typu .', poniewa PHP wywietla warto jako /, dlatego
po konwersji zmienna typu %('+ ma warto /.
Jak wida, rwnie zmienna .' ma warto /. Zmienna typu %('+ miaa warto
1., lecz po konwersji na typ .' zmienna nie bya pusta i dlatego zostaa uznana
za zmienn o wartoci czyli /. Aby po konwersji zmienna typu 2.' miaa warto 1, czyli 3, zmienna typu %('+ musiaaby przed konwersj mie warto 3
bd by pusta:
1
*6!
Jeli dokonamy takiej zmiany w naszym przykadzie, to wida (patrz rysunek 3.4), e
warto zmiennej typu .' jest widoczna jako pusta zmienna. Pamitaj, e PHP traktuje
warto 3 jako warto 1 dla zmiennej typu .'. Dlatego po konwersji zmiennej
typu %('+ o wartoci 3 do typu .' zawarto zmiennej jest traktowana jako 1.
Naley rwnie pamita, e PHP wywietla zmienne typu .' o wartoci 1. jako
zmienne puste. Std w naszym przykadzie zostaa wywietlona pusta zmienna.
Dane zawierajca
zmienn typu boolean
o wartoci False
!
Rzutowanie typw to kolejny sposb przypisywania typw zmiennych.
10
*@ A;!
1
*'
$10
!
710
.1
?B
10
88!
++=
1
*
10
!
1
*'
$1
!
710
.1
?B
1
8!
++=
1
*
10
!
1
*'
$1
!
710
.1
?B
1
8!
++=
034
1
*03410
!
1
*'
$1
!
710
.1
?B
1
8!
++=
4
1
*410
!
1
*'
$1
!
710
.1
?B
1
8!
Wiadomo, e dla takiej wartoci zmiennej, PHP ustawi typ zmiennej jako #0 .. Moesz
jednak zmieni ten typ. Jeli chcesz zmieni typ zmiennej na %('+, moesz to zrobi za
pomoc nastpujcego polecenia:
1
*
10
!
Zmienna *$4('%- przyjmuje warto zmiennej *4#%, ale przypisywany jest jej
typ %('+. Takie rzutowanie typw jest moliwe dla wszystkich typw zmiennych, jak
wida na przedstawionym przykadzie. Po uruchomieniu skryptu przekonasz si, jak
dziaa rzutowanie skryptw (pokazano to na rysunku 3.5).
Rzutowanie typw
!
W przedstawionym przykadzie wida, e warto 5678 zostaa uznana przez PHP za typ
#0 .. Po wykonaniu rzutowania typw, widoczne s zmiany wartoci zmiennej w zalenoci od biecego typu zmiennej.
"
PHP pozwala uywa operatorw arytmetycznych na zgodnych typach zmiennych. Jakie
to typy? Wszystkie przechowujce dane w formie numerycznej (oznacza to dowolny typ
zmiennych z wyjtkiem typu .'). W kolejnym przykadzie przedstawiony zostanie
rwnie operator konkatenacji (poczenia cigw). Nie martw si, jeli nie jeste zaznajomiony z t kwesti. Przyjrzymy si jej za moment:
++3C
132*26!
13A*A6!
++00
13*132D13A!
132 D 13A * 13!
8!
++0.
1*13AE132!
13A E 132 * 1!
8!
++0
1*13A+132!
13A + 132 * 1!
8!
++C
1*13AF132!
13A F 132 * 1!
8!
++03
103*13A132!
13A 132 * 103!
8!
"
Operacje arytmetyczne
W ten sposb utworzone zmienne bd rnych typw. Zmienna *'04/ jest typu ('%+,
a zmienna *'047 jest typu %('+. Jeli zmienisz wartoci zmiennych zgodnie z poniszym
przykadem, skrypt nadal bdzie dziaa poprawnie:
132*26!
13A*A6!
Skrypt nadal bdzie wykonany poprawnie, ale operatory arytmetyczne nie zadziaaj.
Jeli PHP napotka dane innego typu ni numeryczne, zignoruje t zmienn.
" # $
!
%!&
'
PHP udostpnia kilka sposobw pracy na zmiennych acuchowych (%('+). Czsto
korzystasz ze zmiennych acuchowych pobranych z takiego rda jak formularze HTML,
pliki czy bazy danych, dlatego PHP umoliwia manipulowanie tymi danymi na rne
sposoby.
Aby poczy zdefiniowane wczeniej cigi, uyj operatora konkatenacji:
1,
H*1 1. 1
H!
Aby pozna dugo nowego cigu, uyj funkcji %.':
103,3*
1,
H!
PHP umoliwia usuwanie dodatkowego znaku spacji (czsto zwanego rwnie bia
spacj) znajdujcego si na kocu lub na pocztku acucha znakw. Poniewa nasz
nowy acuch nie koczy si ani nie zaczyna bia spacj, musimy j najpierw doda,
aby nastpnie uy tych funkcji:
1,
H,,.*1,
H!
Bia spacj zarwno rozpoczynajc, jak i koczc acuch znakw moesz usun
za pomoc funkcji %(4:
1
,,
H*
1,
H,,.!
PHP pozwala zmieni wielko wszystkich liter w acuchu na wielkie lub na mae. Aby
zmieni wszystkie litery w acuch na wielkie, uyj funkcji %%0:
1,
H,
H
*
31,
H!
PHP umoliwia wyszukanie lokalizacji, utworzenie oraz dodanie podacucha do acucha
znakw. Do utworzenia podacucha znakw suy funkcja 0 %:
10,3*34
1,
H>;!
Argumentem funkcji %9.; jest acuch, ktry ma by wyszukany (w naszym przypadku jest to 1<), acuch, ktrym zostanie on zastpiony (w naszym przykadzie jest
to acuch ;0..-), oraz acuch, wewntrz ktrego zamiana zostanie dokonana (w naszym przykadzie jest to
*(4(9'$&(:).
1
,,
H*
1,
H,,.!
L=333M3K
H
..
F1
,,
HF!
8!
1
,,
H*
1,
H,,.!
L=333M3H=K..
F1
,,
HF!
8!
++
H?B
1,
H,
H
*
31,
H!
L=3
H
1,
H,
H
!
8!
1,
H,
*
1,
H!
L=3J
1,
H,
!
8!
++0J=3
++0J=3
10,3*34
1,
H>;!
0J=3
10,3!
8!
++.0J=3
103,.*
1,
H>10,3!
.0J=3
103,.!
8!
++0=0J=3
10,,
H*
,<G>3>1,
H!
0J=3
10,,
H!
8!
Jeli uruchomisz powyszy skrypt, zobaczysz, jak dziaaj metody obsugi acuchw,
co pokazano na rysunku 3.7. Zauwa, e wywietlajc wyniki dziaania metody konkatenacji, po obu stronach acucha umieciem znaki =. Pozwala to pokaza znaki spacji
umieszczone pomidzy tymi znakami a acuchem.
Metody obsugi
acuchw
"
W PHP istnieje kilka sposobw sprawdzania warunkw logicznych. Sprawdzajc warunek logiczny, porwnujesz jedn warto z inn wartoci i sprawdzasz, czy s sobie rwne:
1*2A4!
N1**2A4O
-0J!
P
Ten fragment kodu wykorzystuje instrukcj (. Skadnia tej instrukcji jest prosta. Jeli
warto jest rwna innej wartoci, PHP zwraca warto wyraenia jako prawda. W powyszym fragmencie kodu sprawdzamy, czy warto zmiennej *. jest rwna /7 .
Jeli tak, to wywietlany jest komunikat, jak pokazano na rysunku 3.8.
Co by si stao, gdyby warto zmiennej *. bya rna od podanej w warunku wartoci?
Poprzedni przykad nie wywietliby adnej wartoci. Jednak za pomoc PHP rwnie
moesz wykonywa okrelone dziaania, jeli warunek nie zostanie speniony.
Testowanie
prawdziwoci
wyraenia za pomoc
instrukcji if
1*;;;;!
N1**2A4O
-0J!
PO
&0J!
P
Jeli wartoci, ktrej szukasz, nie odnaleziono, wykonane zostanie dziaanie zdefiniowane po instrukcji .. Jeli warto zmiennej *. jest rwna podanej wartoci, to
wywietlony zostanie komunikat #'.$('
!. Jeli jednak warto zmiennej
jest rna od podanej wartoci, to wywietlony zostanie komunikat (
#'.$('
!. Nadanie zmiennej *. wartoci innej ni podana w warunku powoduje wywietlenie komunikatu (
#'.$('
!, jak pokazano na rysunku 3.9.
Sprawdzanie
nieprawdziwoci
wyraenia za pomoc
instrukcji if else
Jeli masz wiele warunkw do sprawdzenia za pomoc instrukcji (, moesz to zrobi
w nastpujcy sposb:
1*44AA!
N1**22O
-0J03C
H
HQ!
P
N1**44AAO
-0J03C
H
HN0!
P
N1*;;O
-0J03C
H
HQH!
P
Najwikszym problemem sprawia tutaj fakt, e PHP wykona wszystkie instrukcje (,
nawet jeli pierwszy warunek zostanie speniony. Aby tego unikn, moesz wykorzysta
zagniedone instrukcje (:
1*44AA!
#N1**22O
-0J03C
H
HQ!
P#N1**44AAO
-0J03C
H
HN0!
P#N1**;;O
-0J03C
H
HQH!
P
Jednak, jeli utworzye wiele zagniedonych instrukcji (, pisany przez Ciebie kod szybko
stanie si nieczytelny. Lepszym sposobem bdzie uycie instrukcji &(%; i ;:
1*44AA!
1O
22R
-0J03C
H
HQ!
4H!
44AAR
-0J03C
H
HN0!
4H!
;;R
-0J03C
H
HQH!
4H!
P
W tym przykadzie sprawdzana jest kada warto zmiennej *. w instrukcji ;.
Jeli odnaleziona zostanie pasujca warto, wywietlany jest komunikat o odnalezieniu
hasa dla danego uytkownika.
'
PHP umoliwia wykonywanie w programie ptli na kilka sposobw. Wszystkie ptle
pozwalaj wykonywa serie polece, a do momentu, kiedy warunek wykonania ptli
zostanie speniony, na przykad licznik osignie okrelon warto. Pierwsz metod
jest ptla :
N1H*2!1H*26!1HDDO
1H!
8!
P
Inkrementacja
licznika ptli for
od 1 do 10
Wewntrz ptli ma miejsce kilka wanych zdarze. Pierwszym z nich jest testowanie warunku logicznego. W naszym przykadzie sprawdzalimy, czy warto zmiennej
jest rwna lub mniejsza od 10. Moesz rwnie sprawdza inne warunki, jak pokazano
w tabeli 3.1.
Inne warunki
Warunki
Znaczenie
**
rwny
S*
rny
mniejszy ni
wikszy ni
*
*
***
Moesz uywa tych warunkw nie tylko w poczeniu z instrukcj , ale z dowoln
instrukcj, ktra sprawdza warto warunku logicznego, na przykad z instrukcj (.
Przyjrzyj si, w jaki sposb w poprzednim przykadzie zmieniana jest warto licznika
podczas wykonywania ptli. Warto licznika moe by inkrementowana lub dekrementowana. Dekrementowanie licznika bdzie miao posta:
1HEE
Dekrementacja
licznika w ptli for
od 10 do 1
!
1H*2!
Nastpnie wykonywana jest ptla do chwili, gdy warto licznika osignie 10:
Podobnie jak w przypadku ptli moesz uy rnych operatorw porwnania. Wewntrz ptli warto zmiennej *.(;$'(: jest inkrementowana:
1HDD
Oczywicie moesz rwnie zastosowa podobn metod jak w naszym drugim przykadzie z ptl dekrementowa warto licznika. Po uruchomieniu skryptu ptla
&(. odlicza od 1 do 10, jak pokazano na rysunku 3.12.
Inkrementowana
ptla while odliczajca
od 1 do 10
"
P
1H*26!
Przedstawiona ptla wyglda podobnie jak ptla &(.. Po uruchomieniu skryptu wykonane
zostanie liczenie od 1 do 10, a nastpnie ptla zostanie zakoczona. Czym si w takim
razie rni od ptli &(.? Rnica pomidzy tymi ptlami polega na lokalizacji instrukcji
&(.. W ptli #
&(. warto zmiennej licznika jest modyfikowana (w naszym przykadzie jest inkrementowana), a nastpnie warto tej zmiennej jest sprawdzana. W ptli
&(. warto zmiennej jest testowana, a nastpnie zmieniana. Istotny jest moment zmiany
licznika i moment jego sprawdzenia. Tutaj zmienna *.(;$'(: przy wartoci 1 nigdy nie
jest sprawdzana, poniewa przed sprawdzeniem jest inkrementowana do wartoci 2.
Struktura tablicy
Kada karta w naszym przykadzie jest okrelana jako element tablicy. Warto poszczeglnych elementw tablicy to warto tablicy, a do kadego elementu tablicy mona si
odwoa poprzez klucz. W PHP dostpnych jest kilka sposobw obsugi tablicy.
1
0T6U* !
1
0T2U*)!
1
0TAU*%!
1
0T;U*%!
1
0TVU*-!
1H3>1
*1
0O
1
!
H3
41H3/
M
?1
!
8!
P
Wykorzystywana jest zmienna typu -. Mwi o tym nawias kwadratowy umieszczony
za nazw zmiennej. Zauwa, e tablica zaczyna si od pozycji 0; w PHP wszystkie tablice
zaczynaj si od tej pozycji. W naszym przykadzie warto elementu *&(#4;?/@ jest
rwna E. Teraz, kiedy utworzona zostaa tablica, musisz mie moliwo dostpu do jej elementw. PHP umoliwia odwoanie do kolejnych elementw tablicy w nastpujcy sposb:
1H3>1
*1
0O
1
!
8!
P
Ptla &(. przechodzi przez kolejne elementy tablicy. Tablica jest dzielona na klucze
elementw i wartoci elementw za pomoc instrukcji .(%, a nastpnie instrukcja ;
pobiera wartoci kolejnych elementw tablicy. Wewntrz ptli wywietlane s kolejne
elementy tablicy:
H3
41H3/
M
?1
!
1H3>1
*1
0O
1
!
8!
P
1H3>1
*1
0O
N1H3**8O
)
4H331H3
?B1
!
P
P
Powyszy kod wyszukuje element tablicy o kluczu B i wywietla jego warto, jak pokazano na rysunku 3.14.
Warto elementu
tablicy wyszukana
poprzez klucz tego
elementu
1H3>1
*1
0O
H3
41H3/
M
?1
!
8!
P
Klucze i wartoci
elementw tablicy
utworzonej przez
instrukcj array
Instrukcja - samodzielnie nadaje klucze kolejnym elementom tablicy, jeli nie zostan
one osobno zdefiniowane:
1
0* >)>%>%>-!
1H3>1
*1
0O
H3
41H3/
M
?1
!
8!
P
Klucze kolejnych
elementw tablicy
s automatycznie
tworzone przy uyciu
instrukcji array
(
Zdarza si, e tablica zawiera nieuporzdkowane elementy; wartoci elementw i kluczy
nie s umieszczone na kolejnych pozycjach tablicy i naley je uporzdkowa. Tworzenie
fragmentw kodu, ktry wykonuje porzdkowanie tablicy moe by bardzo czasochonne
(nawet, jeli korzystamy z napisanych przez innych programistw fragmentw kodu).
Na szczcie PHP zawiera zestaw instrukcji, ktre su do tego celu.
W kolejnych punktach omwimy cztery typy instrukcji % przeznaczonej do sortowania
tablicy wedug wartoci elementw tablicy lub ich kluczy.
#
Instrukcja % pozwala posortowa wartoci elementw tablicy w porzdku rosncym:
++
?
4
K0H3K
13H*5>A>;>2>V!
++3K0H
3K0H
48!
1H3>1
*13HO
)
H331H3
?B1
!
8!
P
8!
++3K0H
3K0H
48!
13H!
1H3>1
*13HO
)
H331H3
?B1
!
8!
P
Powyszy fragment kodu powoduje utworzenie tablicy za pomoc instrukcji -, ktra
samodzielnie nadaje klucze kolejnym elementom tablicy. Nastpnie skrypt wywietla
zawarto nieuporzdkowanej tablicy, porzdkuje elementy tablicy i ponownie wywietla
zawarto tablicy, tym razem ju posortowan.
#
Zauwa, e podczas sortowania tablicy przy uyciu instrukcji % zmieniane s klucze
elementw tablicy. Przed sortowaniem klucz 0 wskazywa warto 5, natomiast po sortowaniu ten sam klucz wskazywa warto 1. Moesz zachowa pary klucz-wskazywany
element, rwnoczenie porzdkujc rosnco elementy tablicy. Jak? Uyj funkcji %:
++
?
4
K0H3K>
3.KH3
1
0**2>8*5>"*A>9*;>)*V!
++3K0H
3K0H
48!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
8!
++3K0H
3K0H
48!
1
0!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
W naszym kodzie podczas definiowania tablicy podawane s zarwno wartoci elementw, jak i ich klucze, jednak moesz rwnie skorzysta z automatycznego nadawania
kluczy przez wykorzystanie instrukcji -, podobnie jak w poprzednim przykadzie
opisujcym instrukcj %. Nastpnie skrypt wywietla zawarto nieuporzdkowanej
tablicy, sortuje elementy tablicy za pomoc instrukcji % i ponownie wywietla zawarto tablicy, jak pokazano na rysunku 3.17.
Elementy tablicy zostay uporzdkowane, ale powizania pomidzy kluczami i elementami tablicy pozostay niezmienione. Na przykad klucz E wskazuje element tablicy o warto 4 przed i po sortowaniu.
Tablica posortowana
w porzdku rosncym
z wykorzystaniem
instrukcji asort,
ktra nie modyfikuje
powiza kluczy
z elementami tablicy
#
Moliwe jest rwnie posortowanie elementw tablicy w porzdku malejcym za pomoc
funkcji %:
++
4
K0H3.K
1
0*5>A>;>2>V!
++
48!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
8!
++
48!
1
0!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
Powyszy przykad dziaa analogiczne jak przykadowy skrypt opisujcy funkcj %.
Funkcja % sortuje tablic w porzdku malejcym.
#
PHP umoliwia sortowanie kluczy tablicy w porzdku rosncym za pomoc funkcji :%:
++
H3
4
K0H3K
1
0*8*2>"*5>9*A>*;>)*V!
++3K0H
3K0H
48!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
8!
++3K0H
H
1
0!
3K0H
48!
1H3>1
*1
0O
)
H331H3
?B1
!
8!
P
Powyszy skrypt wyglda analogiczne jak poprzednie przykady, z t rnic, e wykorzystuje instrukcj :% do porzdkowania tablicy.
W tym przykadzie kluczami elementw tablicy s litery. Po posortowaniu za pomoc
instrukcji :%, klucze s sortowane w porzdku alfabetycznym.
%!&
'
Korzystanie z funkcji to jeden z najprostszych sposobw dzielenia kodu na fragmenty,
ktre mog by wielokrotnie wykorzystywane.
N3
W0
1O
3 1!
P
1
*W0
0.!
1
!
Innymi sowy, instrukcja %0' zwraca wyniki wykonania funkcji po jej wywoaniu.
Dlatego, aby pobra wyniki wykonania funkcji, naley zapisa je jako zmienn:
1
*W0
0.!
P
1
*? !
++
?B
W#"1
!
1
!
++
8!
++K
W#"Y1
!
1
!
Powyszy kod modyfikuje zmienn *'$&. Najpierw zmiennej nadawana jest warto:
1
*? !
Nastpnie wywoywana jest funkcja, do ktrej argument jest przekazywany przez warto
i wyniki dziaania funkcji s wywietlane. Zauwa, e w PHP argumenty do funkcji s
domylnie przekazywane przez warto:
W#"1
!
1
!
Aby przekaza do funkcji argument przez zmienn, naley doda znak A przed zmienn
przekazywan do funkcji (jak na przykad A*'4). Po uruchomieniu skryptu wida, e
przy wywoaniu funkcji z przekazaniem argumentu przez warto, warto zmiennej acuchowej pozostaje niezmieniona (patrz rysunek 3.18). Jednak przy przekazaniu argumentu
przez zmienn, jej warto jest zmieniana.
Wyniki przekazania
argumentu
przez warto
i przez zmienn
!
1
!
Naley tutaj wspomnie o kilku istotnych kwestiach. Po pierwsze, cay kod dotyczcy
klasy jest umieszczony wewntrz nawiasw funkcji klasy. Po drugie, zauwa, e funkcja
B(#4;&(%.' uyta w poprzednich przykadach tego rozdziau, ponownie si
pojawia. Nie ma obowizku umieszczania definiowanych funkcji wewntrz klasy, ale
jest to naturalny krok, jeli dysz do strukturyzacji kodu. Podobnie jak w poprzednich
przykadach, funkcja B(#4;&(%.' pobiera dane poprzez argument, dokleja dane
do zmiennej i zwraca zmienn jako wynik dziaania.
1.4H
*
.H!
"
1
!
8!
++
03.HH
1.4H
A*
.H!
1.4H
AE90.&
0.!
1
*1.4H
AEW0
!
++
?
H/
1
!
Musisz zadeklarowa zmienn klasy przy uyciu instrukcji ,. Dziki temu PHP wie,
co jest zmienn, a co funkcj.
W naszym przykadzie obiekt zawiera dwie funkcje:
N3
90.&
13
O
1
E
*13
!
P
N3
W0
O
3W
. 1
E
!
P
Pierwsza z nich pobiera argument i przypisuje zmiennej klasy warto tego argumentu:
N3
90.&
13
O
1
E
*13
!
P
Druga funkcja przekazuje warto zmiennej klasy poza klas. Kod wywoujcy klas
spenia dwa zadania. Najpierw tworzy kopi klasy i wywietla warto zmiennej klasy:
1.4H
2*
.H!
1
*1.4H
2EW0
!
1
!
Nastpnie tworzy kolejn kopi klasy i przekazuje warto funkcji D#C$& w celu
przypisania wartoci zmiennej klasy. Ostatnim krokiem jest wywietlenie nowej wartoci
zmiennej klasy:
1.4H
A*
.H!
1.4H
AE90.&
0.!
1
*1.4H
AEW0
!
++
?
H/
1
!
Zmiana wartoci
zmiennej klasy