Как преобразовывается тип переменной в PHP?
PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется согласно контексту, в котором она используется. Это из учебника по PHP, а теперь "по-русски" 
Переменная будет того типа, который вы ей приравниваете.
PHP код:
$a = 12; // integer (целое)
$b = 12.12; // float (c плавающей точкой)
$c = "text"; // string (строковая)
$d = true; // boolean (булевое, т.е. принимать только одно из двух значений 0/1 или true/false)
$e = c('edit1') ; // object (объект. Напишите после этой инструкции: pre ($e->text) ; и получите text в edit1
$d = array(12, 23) ; // array (массив)
// resource (ресурс) - этот тип мы рассматривать не будем. К нему относятся (самые расспространенные на форуме :) ) - curl, ftp, gd и т.п.
А теперь самое интересное:
PHP код:
$a = 12kl23; //integer=12
$b = 12.123dgsdfg123; // float=12.123
$c = 12e3tyrw; // float 12000
$d = "10 хрюшек" + "2 пряника"; // integer=12 :)
Почему так происходит? При присваивание переменной некого значения происходит "опознавание" типа. Если встречаются только цифры и нет ".", "Е" или "е", то это целое. Если встретилось что-то из этого ".", "Е" или "е" - значит тип float. Если начинается с букв в кавычках (одинарных или двойных), то интерпретируется как string. Без кавычек true/TRUE/tRuE или false/FALSE/FaLsE определяется как тип boolean.
Теперь коснемся приведения типов к другому типу.
PHP код:
$str = "12.2131dtgs"; // "12.2131dtgs"
$fl = 12.2131dtgs; // 12.2131
$a = (int)$fl; // 12 отсекается все от точки
$b = (string)$fl; // "12.2131" у $fl PHP уже отсек лишние символы
$c = (boolean)12.2; // true. здесь true всегда, если значение не 0 или не пустая строка (даже если число отрицательное все равно TRUE. только 0 или пустая строка приводят к FALSE)
$d = (array)$str; // массив $d[0] = "12.2131dtgs"
$e = (array)$a; // массив $e[0] = 12 (массив из одного элемента)
зачем нам это надо? Во-первых понять механизм, т.к. это я считаю преимуществом у PHP, во-вторых, можно использовать как своеобразную защиту "от дурака". Когда просят ввести число, а пользователь вводит строку. Ну и в-третьих, можно проделывать такие вычисления, которые в других языках неминуемо ведут к условным операторам. Например, если $x>$y, то $z=23. Если $x<$y, то $z=-12.3. Если $x=$y, то $z=0.
PHP код:
$z = 1-($x==$y)+23*($x>$y)-12.3*($x<$y);
Круто получается