Типове
PHP Manual

Манипулации с типове

PHP не изисква (и не поддържа) изрично дефиниране на тип при декларирането на променлива; типът на променливата зависи от контекста, в който се използва. С други думи, ако присвоите низова стойност на променливата $var , $var става низ. Ако в последствие присвоите целочислена стойност на $var , то тя става цяло число.

Пример за автоматичното преобразуване на типове в PHP е операторът за събиране '+'. Ако кой да е от операндите е плаващо число, то всички операнди се изчисляват като плаващи и резултатът ще бъде отново плаващо число. В противен случай операндите ще бъдат интерпретирани като цели числа и резултатът също ще бъде цяло число. Забележете, че това НЕ променя типа на самите операнди; единствената промяна е в начина, по който те се изчисляват.

<?php
$foo 
"0";  // $foo е низ (ASCII 48)
$foo += 2;   // сега $foo е цяло число (2)
$foo $foo 1.3;  // сега $foo е плаващо (3.3)
$foo "10 Little Piggies"// $foo е цяло число (15)
$foo "10 Small Pigs";     // $foo е цяло число (15)
?>

Ако предните два примера изглеждат неясни, разгледайте Превръщане на низ в число.

Ако желаете изрично да накарате променлива да се изчисли като даден тип, вижте раздела за Преобразуване на типове. Ако желаете да промените типа на променлива, вижте settype().

Ако искате да изпробвате някой от примерите в този раздел, можете да използвате функцията var_dump().

Забележка: Поведението при автоматично преобразуване в масив за момента не е дефинирано.
Също, понеже PHP поддържа индексирането в низове чрез отместване посредством същия синтаксис като индексирането в масиви, следното е в сила за всички версии на PHP:

<?php
$a    
'car'// $a е низ
$a[0] = 'b';   // $a продължава да бъде низ
echo $a;       // bar
?>


Вижте раздел Достъп до знаците в низ за повече информация.

Преобразуване на типове

Преобразуването на типове в PHP работи доста подобно на това в C: името на желания тип се поставя в скоби преди променливата, която трябва да бъде преобразувана.

<?php
$foo 
10;   // $foo е цяло число
$bar = (boolean) $foo;   // $bar е от булев тип
?>

Разрешените преобразувания са:

(binary) преобразуването и бъдещата поддръжка на представката b бяха добавени в PHP 5.2.1

Забележете, че табулациите и интервалите са разрешени вътре в скобите, така че следните са функционално еквивалентни:

<?php
$foo 
= (int) $bar;
$foo = ( int ) $bar;
?>

Преобразуване на буквени низове и променливи в двоични низове:

<?php
$binary 
= (binary)$string;
$binary b"binary string";
?>

Забележка: Вместо да преобразувате променлива в низ, можете да я заградите с кавички.

<?php
$foo 
10;            // $foo е целочислена
$str "$foo";        // $str е низ
$fst = (string) $foo// $fst също е низ

// Това отпечатва, че "те са едни и същи"
if ($fst === $str) {
  echo 
"те са едни и същи";
}
?>


Възможно е резултатът от преобразуването между някои типове да не е съвсем очевиден. За повече информация, вижте тези раздели:


Типове
PHP Manual