首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP到底是如何实现“动态”变量的?

问PHP到底是如何实现“动态”变量的?
EN

Stack Overflow用户
提问于 2012-09-22 22:39:51
回答 3查看 119关注 0票数 7

当我今天测试以下代码时,我感到非常惊讶:

代码语言:javascript
复制
$star = "Aquarius";
$star = 11;

调试时,我注意到$star只是从string类型更改为integer类型。我对这种功能感到惊讶。例如,在C++中,这是不可能的,但是在c#中,我考虑了var变量,但它不是相同的。

例如,您不能这样做:

代码语言:javascript
复制
var dynamic = "Hello";
dynamic = 3;

当我基本上说$star = 11时,我开始想知道到底发生了什么。我的猜测是,由于$star是直接分配给它的,所以它只是被重新初始化了(但这似乎很奇怪,因为解释器已经知道前面已经声明了变量$star )。有人能提供一些明确的或官方的来源支持的解释吗?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-22 22:49:07

在C/C++中,这种类型是在编译时定义的,因为可以在此基础上进行各种优化。

在C#中,编译器根据上下文推断类型,在编译器的大脑中,编译器用var关键字代替类型。这就是为什么在编译器进行初始推断之后不能更改类型的原因。

在PHP等脚本语言中,变量是Hash Map (关联数组,符号表)中的一个条目。这定义了名称空间(和作用域)。实际值部分是一个通用对象类型,它同时存储值和类型。

票数 7
EN

Stack Overflow用户

发布于 2012-09-22 22:48:31

PHP是一种动态语言,在精神上类似于Perl、Ruby、Python或许多其他语言。另一方面,C++是编译和静态类型的,要求每个变量在编译时定义一个类型。

查看PHP以获得对PHP动态类型实现的一些深入了解:http://php.net/manual/en/language.types.type-juggling.php

票数 0
EN

Stack Overflow用户

发布于 2012-09-22 22:52:51

PHP是一种松散类型的语言。PHP根据值将变量转换为正确的数据类型。

看看这个- http://php.net/manual/en/language.types.type-juggling.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12548258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档