Преобразование типов PHP
echo 'test 01' . '\n'; // "test 01\n" (без перевода строки)
echo 'test 01' . "\n"; // "test 01" (с перводом строки)
echo "test \' 01" ; // "test \' 01" (выводим как есть)
echo 'test \' 01'; // "test ' 01" (экранируем символ)
$a = 5;
echo "тест 10 " + $a . "\n"; // 0+5=5 целое число (первая часть определяется как строка и преобразуется в число 0
echo "10 тест " + $a . "\n"; // 10+5=15 целое число (первая часть определяется как число 10)
echo $a + " 10 тест". "\n"; // 5+10=15 целое число (вторая часть определяется как число 10)
echo $a + " 10.1 тест". "\n"; // 5+10.1=15.1 дробное число (вторая часть определяется как число с дробной частью float)
echo $a + " 10,1 тест". "\n"; // 5+10=15 целое число (вторая часть читается до первого символа не относящегося к числу)
echo $a + "тест 10". "\n"; // 5+0=5 целое число (вторая часть определяется как строка, при преобразовании в число = 0)
echo $a + "тест 10.1". "\n"; // 5+0=5 целое число (вторая часть определяется как строка, при преобразовании в число = 0)
echo $a + "тест 10,1". "\n"; // 5+0=5 целое число (вторая часть определяется как строка, при преобразовании в число = 0)
$textNull = 'null';
var_dump($textNull); // string(4) "null"
$textNullInt = (int)$textNull; // строку "null" в целое число
var_dump($textNullInt); // int(0)
$textTest = "test";
$textTestInt = (int)$textTest; // строку "test" в целое число
var_dump($textTestInt); // int(0)
$textNum = "10";
$textNumInt = (int)$textNum; // строку "10" в целое число
var_dump($textNumInt); // int(10)
$textNum = "10.1";
$textNumInt = (int)$textNum; // строку "10" в целое число
var_dump($textNumInt); // int(10)
$textNum = "10.1";
$textNumFloat = (float)$textNum; // строку "10.1" в число с дробной частью
var_dump($textNumFloat); // float(10.1)
$textNum = "10.6";
$textNumInt = (int)$textNum; // строку "10.6" в целое число, обрезая все что не входит в [0-9]
var_dump($textNumInt); // int(10)
$textNum = "10.6";
$textNum *= 2; // умножение преобразует строку в число с плавающей запятой
var_dump($textNum); // float(21.2)
$a = true;
var_dump($a); // bool(true)
$b = false;
var_dump($b); // bool(false)
$at = 'true';
var_dump($at); // string(4) "true"
$bt = "false";
var_dump($bt); // string(5) "false"
а теперь эксперименты:
$ai = (int)$a; // преобразовываемым boolean(true) в целое число int
var_dump($ai); // bool(true) в int (в целое число) - int(1)
$bi = (int)$b; // преобразовываемым boolean в int
var_dump($bi); // bool(false) в int (в целое число) - int(0)
$ati = (int)$at; // преобразовываемым boolean в целое число int
var_dump($ati); // string(4) "true" в int (в целое число) - int(0)
$bti = (int)$bt; // преобразовываемым boolean в int
var_dump($bti); // string(5) "false" в int (в целое число) - int(0)
$af = (float)$a; // bool(true) - преобразовываем в float
var_dump($af); // float(1)
$bf = (float)$b; // bool(false) - преобразовываем в float
var_dump($bf); // float(0)
var_dump((int)"$25"); // int(0)
var_dump((int)"15%"); // int(15)
var_dump(3 + (double)"15%" + (float)"$25"); // float(18)
$arr = []; // array() - просто пустой массив
$arr = (int)$arr; // в целое число
var_dump($arr); // int(0)
$arr = [1 => 10, 2 => 20]; // теперь не пустой массив
$arr = (int)$arr;
var_dump($arr); // int(1) { c float тоже =1}
$num = 55; // число
$textNum = "$num"; // теперь строка
var_dump($textNum); // string(2) "55"
$num1 = (int)55; // для пущей наглядности еще и объявим целым числом
$num2 = (int)33;
$num3 = $num1 / $num2; // разделим целые числа 55/33
var_dump($num3); // float(1.6666666666667)
$f = (boolean)false;
$f++;
var_dump($f); // bool(false)
$t = (boolean)true;
$t++;
var_dump($t); // bool(true)
но если использовать конкатенацию:
$s = ($t++) . $t; // получается ="1"."1"
var_dump($s); // string(2) "11"
$s = ($f++) . $f; // ="".""
var_dump($s); // string(2) ""
$tst = (null == '');
var_dump($tst); // bool(true)
$tst = (null === ''); // bool(false)
var_dump($tst);
var_dump((int)('1'.'2')); // int(12) (конкатенация строк "1" и "2" -> строка "12", срока в число -> 12)
var_dump((int)'1'.'2'); // string(2) "12" (конкатенация числа 1 и строки "2" -> строка "12"
var_dump((int)'1'.(int)'2'); // string(2) "12"
var_dump((int)'1'+(int)'2'); // int(3)
var_dump((bool)'1'.(bool)'2'); // string(2) "11" (число <>0 -> true, true в сроку -> "1", результат конкатенации "11")
var_dump((bool)'1'+(bool)'2'); // int(2) (число <>0 -> true, true в число -> 1, 1+1=2)
var_dump((int)[""=>""] + 1); // int(2)
var_dump((int)[""=>""] + "1"); // int(2)
var_dump((int)[""=>""] + '1 \' test'); // int(2)
var_dump((bool)[''=>""] + '\t 5 \' test'); // int(1)
var_dump((bool)[''=>""] + "\t 5 \' test"); // int(6)
var_dump((int)[] + '5 \' test'); // int(5)
var_dump((bool)[''=>""] + '5 \' test'); // int(6)
var_dump((bool)[] + '5 \' test'); // int(5)
var_dump("a \Test \' a"); // string(12) "a \Test \' a"
var_dump('a \Test \' a'); // string(11) "a \Test ' a"
просмотров: 1455