zoukankan      html  css  js  c++  java
  • 自学PHP笔记(三) 类型转换

    本文转发来自:https://blog.csdn.net/KH_FC/article/details/115558701
    在真正使用PHP写项目时会经常用到不同数据类型之间进行转换,PHP中类型转换是比较简单的,只需要在变量前面加上用括号括起来的数据类型名称就可以了,数据类型转换有以下几种:

    转换类型 说明
    (bool)(boolean) 转换为布尔值
    (string) 转换为字符串
    (int)(integer) 转换为整数
    (float)(double)(real) 转换为浮点型
    (array) 转换为数组
    (object) 转换为对象
    (unset) 转换为NULL,也就是删除变量
    (binary)b前缀 转换为二进制字符串

    除了上面几种转换方式还有一个使用settype()函数进行转换
    示例】使用settype()函数进行数据类型转换

    <?php
    	$a = "abc";
    	$b = 123;
    	settype( $b, "float");
    	var_dump($b);
    ?>
    

    输出结果为:float(123)
    方法settype()使用方法
    函数内第一个为变量,在上面示例中为$b,第二个参数为数据类型,也就是你想将这个变量值转换为哪种类型,在上面示例中使用的是float,在PHP7版本中支持boolean、float、integer、string、null、array、object。注意:此函数只能返回布尔值,可用于判断,类型转换成功则返回true,转换失败则返回false
    示例】转换数据类型的常用方法

    <?php
    	$num = '123abc';
    	var_dump((integer)$num);
    	echo '<br>';
    	var_dump((float)$num);
    	echo '<br>';
    	var_dump((string)$num);
    ?>
    

    输出结果为:

    int(123)
    float(123)
    string(6) "123abc"
    

    1.转换为字符串

    一个值可以通过在值前面加上(string)或者(strval)函数来转换为字符串,在一个需要字符串的表达式中,字符串会自动转换,在使用函数echo()或者print()时,或者在一个变量和一个字符串进行比较时,就会发生这种转型。print()类似于print_r()
    示例

    <?php 
    	$str = 'abcdef';
    	$num = 12345.123;
    	var_dump((string)$num);
    	echo '<br>';
    	if ($str == 'abcdef') {
    		echo true;
    	}
     ?>
    

    输出结果为:

    string(9) "12345.123"
    1
    

    注意】在进行字符串转换时应注意以下几点:

    1. 一个布尔值被转换时则会将true转换成1,而false值将会被转换为空""这里空不是NULL,而是空的字符串,这种转换可以在布尔值和字符串之间随意转换。
    2. 一个整数或者浮点数被转换字符串,则会转换为数字的字面样式的字符串,包括采用科学技术法记录的浮点数。
    3. 数组被转换为字符串Aaary,因此使用函数echo()或者print()无法正确的显示出数组的值,如果想要正确输出数组中的值则需要采用echo (array('$a'))这种方式进行,也就是读取数组中值的方法。
    4. 资源总会被转换为Resource id#1结构的字符串,其中1是PHP分配给该资源独有的数字。
    5. NULL总会被转换为空的字符串。

    2.转换为整数

    想要将一个值转换为整数,可以使用(int)或者(integer)进行强制转换,不过大多数都不需要进行转换,在使用运算符、函数或者判断数值需要一个整数值时,值会自动转换为整数,还可以通过intval()函数进行转换。
    注意】在进行转换整数时需要注意以下两点:

    1. 当要将布尔值转换为整数时,则会将布尔值中true转换为1false则会被转换为0
    2. 当要将浮点数转换为整数时,将向零取整,如果浮点数超出了整数范围,则转换结果变得不容易控制,这里不建议将未知的浮点数转换为整数,因为获取的结果可能不是你想象的那样哦,还有就是向零取整并不是四舍五入。
      示例
    <?php
    	$bool = true;
    	$float = 10.6111;
    	$abc = ( 0.1 + 0.7 ) *10;
    	echo intval($bool);
    	echo '<br>';
    	echo intval($float);
    	echo '<br>';
    	echo (int)$abc;
    ?>
    

    输出结果为:

    1
    10
    7
    

    这个示例可以看出正常情况下$abc运算结果为8,但是当转换为整型后确输出了7,输出结果不正确,所以在浮点数转换整数时一定要注意。

    3. 转换为布尔值

    想要将一个值转换为布尔值是比较简单的,只需要使用(bool)或者(boolean)来强制转换为布尔值即可,大部分情况下是不需要进行转换的,当使用运算符、函数或者做判断时都可以自动转换为布尔值的。
    注意】在转换布尔值时需要注意下面几个值转换则会转换为false

    1. 0:整数零
    2. 0.0:浮点数零
    3. "0":字符串零
    4. "":空字符串
    5. 空数组:没有任何值得数组
    6. 空对象:没有任何成员变量得对象
    7. NULL:特殊类型NULL
    8. 从没有任何标记得XML文档生成得SimpleXML对象
      除了以上值所有类型所有值都会转换为true
      示例
    <?php
    	$array = array();
    	$int = 1;
    	$str = "";
    	var_dump((bool)$array);
    	echo '<br>';
    	var_dump((bool)$int);
    	echo '<br>';
    	var_dump((bool)$str);
    ?>
    

    输出结果为:

    bool(false)
    bool(true)
    bool(false)
    

    4. 检测数据类型

    在很多时候都需要由程序自动去判断数据类型,PHP内置了一些检测数据类型得函数,可以根据不同得类型进行检测,判断是否属于某种类型,如果符合则返回true,如果不符合则返回false。常用得数据类型检测函数:

    检测函数 说明
    is_bool 检测变量是否为布尔值
    is_string 检测变量是否为字符串
    is_float 检测变量是否为浮点数
    is_int 检测变量是否为整数
    is_null 检测变量是否为空
    is_array 检测变量是否为数组
    is_object 检测变量是否为对象
    is_numeric 检测变量是否为数字或者是数字组成得字符串
    is_double 检测变量是否为浮点数

    示例1】判断是否为整数

    <?php
    	$int = 100;
    	if (is_int($int)){
    		echo '$int'."是整数类型,并且整数值为$int";
    	}else{
    		echo '$int'."不是整数类型";
    	}
    ?>
    

    输出结果为:$int是整数类型,并且整数值为100
    示例2】判断是否为浮点数

    <?php
    	$int = 100;
    	if (is_float($int)){
    		echo '$int'."是浮点数类型,并且浮点数值为$int";
    	}else{
    		echo '$int'."不是浮点数类型";
    	}
    ?>
    

    输出结果为:$int不是浮点数类型

    小灶】在测试字符时经常会遇到不知道会输出什么类型得值,也不知道自己写得变量是什么类型时,可以采用gettype()或者var_dump()查看变量或者值得数据类型

    • gettype函数只输出值或变量得类型,不会输出值
    • var_dump函数即输出值也输出类型
      示例】使用gettype函数输出变量类型
    <?php
    	$int = 0.1111;
    	echo gettype($int);
    ?>
    

    输出结果为:double也就是浮点数类型

  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/blxt/p/14638993.html
Copyright © 2011-2022 走看看