您的位置:首页 > 编程语言 > PHP开发

php基础——数据类型转换

2020-06-29 04:51 302 查看

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。

自动类型转换

  • php基本数据类型精度 bool < int < float
  • 在运算时,数据类型会自动向高精度转换

自动转换示例

$str = 'abc';     // str
$str = 123;       // int
$str = array(1,2,3);  // array
$str = false;     // bool

// 在运算时,数据类型会自动向高精度转换
$a = 10;
$b = true;
$num = $a + $b;   // int 11
$num = $a + $b + 0.1;   // float 11.1

根据上下文的特殊自动转换

  • 算数运算符,字符串到数字的自动转换
  • 字符串运算符,数字到字符串的自动转换
  • 比较运算符,字符串到数字的自动转换
// 字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出的部分转成数字
// 算数运算符,根据上下文先将$a转为float,即$a=12.3,然后运算
$a = "12.3hello99";
$a = $a + 3;
var_dump($a);   // float 15.3

// 字符串运算符,数字到字符串的转换
// 字符串运算符,根据上下文先将$a转为string,然后运算
$a = 123;
$a = $a."hello";
var_dump($a);   // string '123hello'

// == 运算符,字符串到数字的转换
$a = 1;
$b = '1xxx';	// == 比较时 类型转换 $b=1
var_dump($a == $b);     // boolean true
var_dump($a === $b);    // boolean false

$a = 0;
$b = 'xxx';		// == 比较时 类型转换 $b=0
var_dump($a == $b);     // boolean true
var_dump($a === $b);    // boolean false

//到布尔型的判断,以下值都被当作假
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)

强制类型转换

方式1:settype — 设置变量的类型

  • 直接改变了
    $num
    本身的数据类型
  • 成功时返回
    TRUE
    , 或者在失败时返回
    FALSE
//type的值可能为:'bool' 'int ' 'float' 'string' 'array' 'object' 'null'
$num = 100;
settype($num,'float');
var_dump($num);

settype($num,'array');
var_dump($num);

settype($num,'object');
var_dump($num);

settype($num,'null');
var_dump($num);

方式2: (类型)变量的方式

  • 并没有改变
    $num
    本身的数据类型,只是把返回的结果类型改变了
  • 也可以把返回值赋给
    $num
    ,从而改变
    $num
    的数据类型
//()中的值可能为:bool int float string array object unset
$num = 100;
$a = (string)$num;
var_dump($num,$a);  // int 100, string '100'

方式3: intval() boolval() 等函数

  • 并没有改变
    $num
    本身的数据类型,只是把返回的结果类型改变了
  • 也可以把返回值赋给
    $num
    ,从而改变
    $num
    的数据类型
// intval floatval strval boolval 这几个函数
$num = 100;
$a = floatval($num);
var_dump($num,$a);  // int 100, float 100

小结三种方式的区别及使用

  • 第1种会修改变量本身,使其变为新的数据类型
  • 第2,3种不会修改变量本身,且第2种支持改变的数据类型很多
  • 第1,2种用的比比较多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: