Projektowanie stron WWW od podszewki
Losowy artykuł: Bugi w NetBeans

Kursy mojej produkcji

1.12 Rzutowanie typu

Podczas omawiania zmiennych wspomniałem o tym, że w PHP występuję kilka typów danych. Czasami zachodzi potrzeba zmiany typu zmiennej. W tym celu stosujemy taki zapis:
Kod:
<?php
$liczba 17.5// Typ float

echo (int)$liczba// Zwróć uwagę na ucięta wartość po rzutowaniu
?>
Zapis rzutowania zmiennej jest bardzo prosty. Najpierw w nawiasie piszemy typ docelowy, a następnie wrzucamy nazwę zmiennej.
Kod:
<?php
$liczba 17// Typ integer

$wynik_1 = (float)$liczba// Zmiana na liczbę zmiennoprzecinkową
$wynik_2 = (string)$liczba// Zmiana na ciąg znaków
$wynik_3 = (bool)$liczba// Zmiana na typ boolowski

$ciag_znakow 'abcdefghij17xyz'// Typ string

$wynik_4 = (int)$ciag_znakow// Zmiana na liczbę całkowitą
$wynik_5 = (float)$ciag_znakow// Zmiana na liczbę zmiennoprzecinkową
$wynik_6 = (bool)$ciag_znakow// Zmiana na typ boolowski

echo $wynik_1;
?>
Powyższy kod pokazuje kilka kombinacji rzutowania. Aby sprawdzić wyniki wszystkich kombinacji będziecie musieli po uruchomieniu skryptu zmieniać numer echowanej zmiennej.
Kod:
<?php
$ciag '123test456';

echo (int)$ciag;
?>
Zwróćcie uwagę na to, że przy konwersji stringu na integer wybiera wartość, która jest liczba całkowitą, a resztę nie pasującą do wzorca po prostu ucina.

Funkcje konwertujące typy

PHP posiada kilka funkcji wspierających konwersje typów. Funkcja gettype() pobiera typ zmiennej, natomiast settype() zmienia typ na zadany.
Kod:
<?php
$zmienna '123';
echo '$zmienna jest typu: '.gettype($zmienna).'<br />';
settype($zmienna'integer'); // Zmiana typu zmiennej
echo '$zmienna jest typu: '.gettype($zmienna);
?>
Oprócz funkcji settype() mamy jeszcze do dyspozycji kilka innych.
  • doubleval() lub floatval() - funkcje zmieniające typ zmiennej na zmiennoprzecinkową
  • intval() - funkcja zmieniającą typ zmiennej na całkowity
  • strval() - funkcja zmieniającą typ zmiennej na ciąg znaków

Konwersja wymuszona

Przy wykonywaniu niektórych operacji wymuszamy konwersje wymuszona. Przykładem takiego wymuszenia jest np. dodanie ciągu znaków do liczby całkowitej bądź zmiennoprzecinkowej. Pamiętajmy, że przy zapisie liczb zmiennoprzecinkowych używamy . czyli kropki, a nie , (przecinka).
Kod:
<?php
$zmienna '-2';
$zmienna += 4// $zmienna jest teraz typem całkowitym
$zmienna += 1.3// $zmienna jest teraz typem zmiennoprzecinkowym
$zmienna 17 '10 małych myszek';// $zmienna jest teraz typem całkowitym
$zmienna += '10,5 orzeszków'// $zmienna nadal jest typem całkowitym
$zmienna += '5.2 placka'// $zmienna od teraz jest typem zmiennoprzecinkowym
?>

Możliwe kombinacje

Poniżej przedstawiam listing z rożnymi drogami zmiany typu zmiennych.
Kod:
<?php
// Zmiana zmiennej na typ całkowity
$zmienna = (int)$zmienna;
$zmienna = (integer)$zmienna;
settype($zmienna'int');
settype($zmienna'integer');
$zmienna intval($zmienna);
// Zmiana zmiennej na typ boolowski
$zmienna = (bool)$zmienna;
$zmienna = (boolean)$zmienna;
settype($zmienna'bool');
settype($zmienna'boolean');
// Zmiana zmiennej na typ zmiennoprzecinkowy
$zmienna = (float)$zmienna;
$zmienna = (double)$zmienna;
$zmienna = (real)$zmienna;
settype($zmienna'float');
settype($zmienna'double');
$zmienna doubleval($zmienna);
$zmienna floatval($zmienna);
// Zmiana zmiennej na typ string
$zmienna = (string)$zmienna;
settype($zmienna'string');
$zmienna strval($zmienna);
// Zmiana zmiennej na typ tablicy
$zmienna = (array)$zmienna;
settype($zmienna'array');
// Zmiana zmiennej na typ obiektu
$zmienna = (object)$zmienna;
settype($zmienna'object');
// Zmiana zmiennej na typ NULL czyli pusty
$zmienna = (unset)$zmienna;
settype($zmienna'null');
$zmienna null;
// Zmiana zmiennej na typ binarny
$zmienna = (binary)$zmienna// Możliwość dostępna od PHP 5.2.1
?>