skanuj0047 (78)

skanuj0047 (78)



Rozdział 2. ♦ Znaczniki, zmienne i typy danych 59

powoduje, że zmienna napi s otrzymuje typ stri ng. Wynika z tego również, że ponowne przypisanie do zmiennej, np. wartości całkowitej, spowoduje zmianę jej typu, czyli:

<?php

Snapis = "napis"

//w tyra miejscu zmienna napis jest typu string Snapis = 1

//w tym miejscu zmienna napis jest typu integer

Spróbujmy teraz wykonać skrypt widoczny na listingu 2.22. Jaki będzie efekt jego działania? W pierwszej chwili możemy spodziewać się, że wartością zmiennej napis3 będzie ciąg znaków powstały z połączenia ciągów zapisanych w zmiennych napisl i napi s2. Wynikiem jest jednak 0! Dlaczego?

Listing 2.22. Efekt użycia operatora + na zmiennych typu string_

<html>

<head>

<ti 11e>Przykładowa strona</ti 11e> </head>

<body>

<?php

Snapisl - "napis pierwszy”: SnapisŻ - "napis drugi":

$napis3 - Snapisl + Snapisż: echo ("Snapis3"):

?>

</body>

</html>

Popełniliśmy oczywiście błąd, na który szczególnie narażone są osoby programujące wcześniej w językach takich jak np. JavaScript. Otóż w PHP operator + jest arytmetycznym operatorem dodawania i nie można go wykorzystać do dodawania zmiennych niearytmetycznych, takich jak łańcuchy znakowe. Co się zatem stało w powyższym skrypcie i dlaczego wynikiem operacji jest wartość 0? Otóż po wykryciu, że ma zostać wykonana operacja dodawania arytmetycznego, nastąpiła automatyczna konwersja obu wartości reprezentowanych przez napisl i napis2 na typ arytmetyczny. Ponieważ jednak żaden z napisów nie zawiera ciągu znaków, który mógłby przedstawiać wartość całkowitą lub rzeczywistą wynikiem tej konwersji, w obu przypadkach, jest wartość arytmetyczna 0. Oczywiście wynikiem dodawania 0 + 0 jest również 0. Stąd wynik całej operacji. Jeszcze w tym rozdziale przekonamy się, jakie reguły rządzą konwersjami w przypadku różnych typów danych oraz w jaki sposób sami możemy dokonywać konwersji.

Rzutowanie typów

Może się zdarzyć, że będziemy chcieli zmienić typ danych, np. tak aby mieć pewność, że nowa zmienna będzie określonego typu. Można tego dokonać za pomocą techniki rzutowania. Odbywa się to podobnie, jak w klasycznych językach programowania,


Wyszukiwarka

Podobne podstrony:
skanuj0022 (219) Rozdział 2. ♦ Znaczniki, zmienne i typy danych 33 Listing 2.5. Skrypt ilustrujący s
skanuj0041 (89) Rozdział 2. ♦ Znaczniki, zmienne i typy danych    53 Zatem wykonani
skanuj0043 (83) Rozdział 2. ♦ Znaczniki, zmienne i typy danychPozostate operatoryWarunkowy Operator
skanuj0045 (81) Rozdział 2. ♦ Znaczniki, zmienne i typy danych 57 if($objl instanceof Klasal){ echo(
skanuj0051 (68) Rozdział 2. ♦ Znaczniki, zmienne i typy danych 63 ♦    typu obiektowe
skanuj0014 (316) Rozdział 2. ♦ Znaczniki, zmienne i typy danych 25 <script language="php&quo

więcej podobnych podstron