php是弱类型的动态语言,我们已经知道了php的变量都存放在一个名为zval的容器中, zval包含了变量的类型和各种类型变量的值。 php中的变量不需要显式的数据类型定义,可以给变量赋值任意类型的数据, php变量之间的数据类型转换有两种:隐式和显式转换。
隐式类型转换
隐式类型转换也被称为自动类型转换,是指不需要程序员书写代码,由编程语言自动完成的类型转换。 在php中,我们经常遇到的隐式转换有:
1.直接的变量赋值操作
在php中,直接对变量的赋值操作是隐式类型转换最简单的方式,也是我们最常见的一种方式,或许我们已经习以为常,从而没有感觉到变量的变化。 在直接赋值的操作中,变量的数据类型由赋予的值决定,即左值的数据类型由右值的数据类型决定。 比如,当把一个字符串类型的数据赋值给变量时,不管该变量以前是什么类型的变量,此时该变量就是一个字符串类型的变量。 看一段代码:
$string = to love someone sincerely means to love all the people, to love the world and life, too.$integer = 10;$string = $integer;
上面的代码,当执行完第三行代码,string变量的类型就是一个整形了。通过vld扩展可以查到第三次赋值操作的中间代码及操作数的类型,再找到赋值的最后实现为zendassigntovariable函数。这在前面的小节中已经详细介绍过了。我们这个例子是很简单的一种赋值,在源码中是直接将
以上就介绍了php内核探索:变量类型的转换,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。