gpt4 book ai didi

php - PHP到底是如何实现 'dynamic'变量的呢?

转载 作者:可可西里 更新时间:2023-11-01 12:53:31 25 4
gpt4 key购买 nike

今天测试下面的代码时惊呆了:

$star = "Aquarius";
$star = 11;

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

例如你不能这样做:

var dynamic = "Hello";
dynamic = 3;

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

谢谢。

最佳答案

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

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

在像 PHP 这样的脚本语言中,变量是 HashMap (关联数组,符号表)中的一个条目。这定义了 namespace (和范围)。实际值部分是一个通用对象类型,它存储值和类型。

关于php - PHP到底是如何实现 'dynamic'变量的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com