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也就是浮点数类型

  • 相关阅读:
    mysql主从延迟判断,监控和问题处理
    oracle备份
    oracle的查询命令
    Appcan 自定义数字加减控件
    PowerDesigner16.5 有用地址
    git远程仓库关联(码云)
    leetcode27.移除元素(双指针法)
    leetcode26.删除排序数组中的重复项(双指针法,顺序表删除)
    leetcode21.合并两个有序链表(链表使用,递归算法)
    leetcode20.有效的括号(hashmap使用,键值匹配)
  • 原文地址:https://www.cnblogs.com/blxt/p/14638993.html
Copyright © 2011-2022 走看看