PHP 数据类型:类型转换 1 个改进

了解

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个string值赋给变量$var$var就成了一个string。如果又把一个integer赋给$var,那它就成了一个integer

参考 PHP基本数据类型

  • 字符串(String)
  • 整型(Integer)
  • 浮点型(Float)
  • 布尔(Boolean)
  • 数组(Array)
  • 对象(Object)
  • NULL(空值)

为什么

程序为什么需要转换类型,讲一个经常遇到的例子:你的网站内容比较多,有分页的功能;你在url传递一个变量page作为表示当前页,但是因为urlget方式传递的(显式的);非法用户可能会篡改,你就需要将page变量强制转换成整型(Integer),保证程序的安全和良好体验性。

开始

PHP 转换类型分为两种:一种自动类型转换,另外是强制类型转换

1. 自动类型转换

  • 字符串转整型(Integer)

    <?php
        $a = '11';
        var_dump($a+5);
    ?>

    输出结果:

    int(16)

    使用var_dump()函数可以打印变量类型

    使用gettype()函数只会返回变量类型(不携带内容)

    这个例子可以看见,变量 a 在定义的时候是一个字符串类型,但是在执行加法操作后,变成了整型(Integer)

  • 字符串转浮点型

    <?php
        $a = '1.25';
        $b = $a*10;
        var_dump($b);
    ?>

    输出结果

    double(12.5)

2. 强制类型转换

允许强制转换的类型 (来自PHP手册)

  • (int),(integer) - 转换成整型
  • (bool),(boolean) - 转换成布尔型
  • (float),(double),(real) - 转换成浮点型
  • (string) - 转换成字符串
  • (array) - 转换成数组
  • (object) - 转换成对象

PHP强制类型转换有三种转换方式:

  1. 在要转换的变量之前加上用括号括起来的目标类型,如(int)$a
  2. 使用3个具体类型的转换函数,intvalfloatval()strval()
  3. 使用通用类型转换函数settype(mixed var,string type)

第一种转换方式:(int) (bool) (float) (string) (array) (object)

<?php
    $num1 = 3.14;
     $num2 = (int)$num1;
    var_dump($num1);//输出float(3.14)
    var_dump($num2);//输出int(3)
?>

第二种转换方式:intval() floatval() strval()

<?php
    $str = '12.3php';
    $int = intval($str); //输出int(12)
    $float = floatval($str);//输出float(12.3)
    $newStr = strval($str);//输出string("12.3php")
?>

第三种转换方式:settype()

<?php
    $num = 12.8;
    $result = settype($num,"int");
    var_dump($result);//输出bool(true) 转换成功
    var_dump($num);//输出int(12)
?>
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!