PHP 进阶之 类型转换

Posted 吃饭睡觉打豆豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 进阶之 类型转换相关的知识,希望对你有一定的参考价值。

引用官方的解释

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

PHP 的自动类型转换的一个例子是乘法运算符“*”。如果任何一个操作数是float,则所有的操作数都被当成float,结果也是float。否则操作数会被解释为integer,结果也是integer。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。

<?php
$foo = "1";  // $foo 是字符串 (ASCII 49)
$foo *= 2;   // $foo 现在是一个整数 (2)
$foo = $foo * 1.3;  // $foo 现在是一个浮点数 (2.6)
$foo = 5 * "10 Little Piggies"; // $foo 是整数 (50)
$foo = 5 * "10 Small Pigs";     // $foo 是整数 (50)
?>

除此之外,我们可以通过显示转换(类型强转换)的办法将一个变量当作某种类型

PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。

<?php
$foo = 10;   // $foo is an integer
$bar = (boolean) $foo;   // $bar is a boolean
?>

允许的强制转换有:

  • (int), (integer) - 转换为整形 integer
  • (bool), (boolean) - 转换为布尔类型 boolean
  • (float), (double), (real) - 转换为浮点型 float
  • (string) - 转换为字符串 string
  • (array) - 转换为数组 array
  • (object) - 转换为对象 object
  • (unset) - 转换为 NULL (PHP 5)
class test 
{ 
    public $var1 = 1; 
    protected $var2 = 2; 
    private $var3 = 3; 
    static $var4 = 4; 

    public function toArray(){        
        return (array)$this;
    }
} 

$t = new test; 
print_r($t->toArray()); 

* PHP不自带toArray函数,需要自己实现,对象强转数组后会将内部所有数值型属性都打印出来,方法和静态属性会被丢弃

上例输出:

Array ( [var1] => 1 [*var2] => 2 [testvar3] => 3 ) 

 

以上是关于PHP 进阶之 类型转换的主要内容,如果未能解决你的问题,请参考以下文章

JVM进阶之字节码指令解析(上篇)

在代码片段中包含类型转换

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

深入理解PHP原理之Opcodes

php变量和数据类型