Zmienne
Zmienne, jak w ka┐dym innym jΩzyku, s│u┐▒ do przetrzymywania danych. Z ka┐d▒ zmienn▒ wi▒┐e siΩ jej typ, na podstawie kt≤rego wiadomo jest, jakie operacje na danej zmiennej mo┐na wykonaµ. W PHP mamy do dyspozycji tylko trzy typy danych: │a±cuchy, liczby ca│kowite oraz liczby rzeczywiste (zmiennoprzecinkowe).
Identyfikatorem nazywamy nazwy zmiennych (ale r≤wnie┐ sta│ych i funkcji). Mog▒ one siΩ zak│adaµ z dowolnych liter, cyfr i znaku podkre╢lenia. Nie wolno jednak nazwy zmiennej zacz▒µ cyfr▒! Wszystkie zmienne w PHP wyr≤┐nia siΩ od pozosta│ych element≤w poprzedzaj▒c ich nazwy znakiem dolara $. Oto przyk│adowe zmienne:
$imie, $x, $a1, $SUPER, $telefon, $nazwa_procedury
Wielko╢µ liter nazw zmiennych w PHP ma istotne znaczenie. Zmienna $x i $X, to dwie r≤┐ne zmienne.
W PHP nie ma konieczno╢ci deklaracji i ustalania typ≤w dla zmiennych. U┐ywamy ich wtedy, kiedy s▒ nam potrzebne i zazwyczaj nie ustalamy jawnie, jakiego typu danej zmienna ma przetrzymywaµ. Interpreter PHP sam siΩ "domy╢la", co przetrzymujemy w zmiennej. Je╢li jest to liczba rzeczywista (z u│amkiem) automatycznie ustali typ zmiennej na double, je╢li ca│kowita liczba to integer, a je╢li tekst to string. S▒ jeszcze inne typy:
Czasami jednak zachodzi konieczno╢µ ustalenia typ≤w dla zmiennych (np. interpreter siΩ myli ;). Do dyspozycji mamy w≤wczas dwie metody ustalania typ≤w danych. Jedn▒ z nich jest u┐ycie funkcji settype, a drug▒ u┐ycie odpowiedniej funkcji konwersji: intval, doubleval lub strval. Poni┐ej zamie╢ci│em przyk│ad z komentarzami, kt≤ry dok│adnie demonstruje u┐ywanie zmiennych i wspomniane funkcje:
<html>
<head>
<title>Tworzenie zmiennych - typy danych</title>
</head>
<body>
<?
$imie="Karol";
// teksty wstawiamy w cudzys│owach
// lub apostrofach
echo "Moje imie to: $imie <br>";
$Temp="3.14 to PI";
// zmienna $Temp jest typu tekstowego
echo "Zawartosc zmiennej temp= $Temp <br>";
settype($Temp,"double");
echo "Teraz ustawilismy jej typ na rzeczywisty: temp= $Temp <br>";
settype($Temp,"integer");
echo "Teraz ustawilismy jej typ na calkowity: temp= $Temp <br>";
settype($Temp,"string");
echo "Teraz ustawilismy jej typ ponownie na lancuchowy: temp= $Temp <br>";
echo "<br>Teraz zademonstrujemy funkcje: strval<br>";
// pozostale, tzn. intval i doubleval uzywamy tak samo
$Temp="3.14 to PI";
echo "Jako lancuch: $Temp <br>";
echo "Jako calkowita ";
echo intval($Temp);
echo "<br>";
echo "Ponownie wartosc zmiennej Temp: $Temp";
?>
</body>
</html>
Teraz jeszcze troche wyja╢nie±. Czym siΩ r≤┐ni umieszczenie tekstu w apostrofach, a czym w cudzys│owach. Ot≤z pierwszy ze sposob≤w (nie by│ jeszcze u┐ywany) powoduje zapamiΩtanie (je╢li w zmiennych) lub wy╢wietlenie (je╢li w funkcjach do wy╢wietlania) danego tekstu w dok│adnie takiej formie, w jakiej go podali╢my. Podanie natomiast tekstu w cudzys│owach powoduje jego analizΩ i zawsze je╢li wyst▒pi tam gdzie╢ nazwa zmiennej (ze znakiem dolara), to wstawienie w jej miejsce faktycznej warto╢ci zmiennej (a nie napisu). W ten w│a╢nie spos≤b wy╢wietlamy na ekranie zawarto╢µ zmiennych.
Drug▒ spraw▒, na kt≤r▒ mog│e╢ zwr≤ciµ uwagΩ jest wy╢wietlenie, po okre╢leniu zmiennej na string tylko liczby. Sta│o siΩ tak dlatego, ┐e wcze╢niej wykonane funkcje (konwersja na double, a p≤╝niej integer) uciΩ│y z naszej zmiennej wszystko co by│o tekstem i pozosta│a tylko cyfra 3. Je╢li nie chcemy "niszczyµ" zawarto╢ci zmiennej, a jednak chcemy wy╢wietliµ jej zawarto╢µ w inny spos≤b u┐ywajmy funkcji intval itd.
ZasiΩg
Miejsce, w kt≤rym dana zmienna zostanie u┐yta pierwszy raz, okre╢la jednocze╢nie jej zasiΩg, czyli obszar w kt≤rym bΩdzie widoczna. Wszystkie zmienne u┐yte (pierwszy raz) wewn▒trz jakiej╢ funkcji widoczne s▒ tylko w jej obrΩbie. Istniej▒ r≤wnie┐ zmienne globalne, kt≤re s▒ widoczne poza funkcjami (a wewn▒trz ich niewidoczne). By zmienna globalna by│a widoczna wewn▒trz funkcji trzeba to jawnie okre╢liµ u┐ywaj▒c s│owa global. Demonstruje to poni┐szy przyk│ad:
<html>
<head>
<title>Widoczno╢µ zmiennych</title>
</head>
<body>
<?
function Pierwsza($x)
{
// $x jest zmienna lokalna
echo "Funkcja PIERWSZA: x= $x <br>";
}
function Druga()
{
$x="Binboy";
// $x jest zmienna lokalna
echo "Funkcja DRUGA: x= $x <br>";
}
function Trzecia()
{
global $x;
// $x jest zmienna globalna
echo "Funkcja TRZECIA: x= $x <br>";
}
$x="www.binboy.com.pl";
Pierwsza("Karol"); // wyswietli napis Karol
Druga(); // wyswietli napis Binboy
Trzecia(); // wyswietli adres strony
?>
</body>
</html>
Sta│e
W PHP mamy r≤wnie┐ mo┐liwo╢µ definiowania sta│ych. Ka┐da sta│a zachowuje siΩ podobnie jak zmienna, jednak jej warto╢µ nie mo┐e byµ zmieniana. Do tworzenia sta│ych u┐ywamy s│owa define w nastΩpuj▒cy spos≤b:
define("NAZWA_STALEJ","JEJ WARTOª╞");
Wszystkie sta│e piszemy wielkimi literami (nie jest to wym≤g, ale tak ju┐ siΩ przyjΩ│o) i nie poprzedzamy ich znakiem dolara ($). Nie obowi▒zuje je r≤wnie┐ zakres widzialno╢µ. S▒ widoczne we wszystkich czΩ╢ciach naszego programu (nie u┐ywamy s│owa global).