Преобразование типов 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"

php type manipulations types Juggling

просмотров: 1455