数据类型转换

一、自动转换(隐式转换)

  1、其他类型转换成数值型

    ①boolean --->  转换成数值型(整型、浮点型)

      true -> 1  false -> 0

      $a=1;

      $b=false;

      echo $a+$b;  //1

      $a=1;

      $b=true;

      echo $a+$b;  //2

    ②string  -->  转换成数值型

      不是合法数字开头的字符串会转换成0,如:

        "true" -> 0  "false" -> 0

      $str="10.1";

      $int=2.1;

      echo $str+$int;  //12.2

      $str="2e3";

      $int=1;

      echo $str+$int;  //2001

      $str="abcd";

      $int=1;

      echo $str+$int;  //1

      $str="1abcd";

      $int=1;

      echo $str+$int;  //2

      $str="12a3b4c5";

      $int=1;

      echo $str+$int;  //13

      $str="12.1a3b4c5";

      $int=1;

      echo $str+$int;  //13.1

      $str="3E2ab3";

      $int=1;

      echo $str+$int;  //301

    1.数值类型的字符串转换成数值类型本身

    2.当字符串中以合法数字开头的时候,一直取到你第一个非法数字之前

      "123abcd" -> 123

      "2e3b34" -> 2e3(2000)

      "2E3b4e5" -> 2E3(2000)

      $a=1;

      $b="true";  //加双引号则为非法数字开头的字符串,去掉引号则为布尔型

      echo $a+$b;  //1

    3.空字符串转换成数值类型

      '' -> 0  "" -> 0  null -> 0

  2、其他类型转换成字符串型

    数值型 -> 值为数值本身的字符串

    布尔类型

      true -> 1

      false -> 空字符串

    数组 -> Array

    对象 -> 不能转换成字符串

    资源 -> Resource #id 数字

    空 -> 空字符串

  3、其他类型转换成布尔型

    转换成布尔型的false:

      0 -> false  0.0 -> false  false -> false

      ''  ""  '0'  "0" -> false

      空array() -> false  null -> false

    其他时候都是true

      "  " -> true  "false"->true  "0.0"->true

二、强制转换(显示转换)

  (int) (integer) -> 强制转换成整型

  (float) (double) (real) -> 强制转换成浮点类型

  (string) -> 强制转换成字符串类型

  (bool) (boolean) -> 强制转换成布尔类型

  (array) -> 强制转换成数组

  (object) -> 强制转换成对象

三、永久转换

  settype($var ,type):设置变量的类型

    type的值可为:

      "boolean"  (或为"bool",PHP4.2.0起)

      "integer"  (或为"int",PHP4.2.0起)

      "float"  (PHP4.2.0之后可用,旧版中使用"double")

      "string"

      "array"

      "object"

      "null"  (PHP4.2.0起)

原文地址:https://www.cnblogs.com/zhouwanqiu/p/9014441.html