为什么PHP在变量前面有$符号?

fas*_*ava 19 php syntax programming-languages

在PHP和其他一些脚本语言中有$var语法,而Java和其他语言我们可以做到var.

它背后有什么理论吗?它能帮助他们解析吗?如果不是为什么他们会选择在前面加一个额外的角色?

Que*_*tin 68

它可以防止变量名与语言关键字冲突,并允许它们以字符串形式进行插值.

  • 然而......它与问题完美匹配 (38认同)
  • 1)在PHP(一种包含大约5700个关键字的语言)中,名称空间冲突比使用大约30个关键字的C更常见.2)echo"嗨,$ first' $ nick'$ last,这是你的$ num $ numext访问."`vs`"嗨,".$ first"."".$ nick."'".$ last .",这是你的.$ $.$ numext."访问.";` - 你更喜欢哪一个? (8认同)
  • 这是一个非常简洁的答案,实际上没有多大帮助......一些例子或细节会有所帮助 (5认同)
  • +通过这种方式发现和使用变量更容易. (2认同)
  • 知道什么是关键字以及什么是变量不应该用任意符号来解决.由于有许多其他语言已经设法实现这一点,恕我直言"预防冲突"并不是一个真正的原因. (2认同)

小智 9

我的理论是,像php这样的脚本语言需要某种方式继续运行,即使引入了一个新的保留字,例如php4 - > php5 got catch.由于它是一种脚本语言,任何被捕获为变量名称的网页都不会因为语言的变化而死亡.

这不是编译语言的问题,因为所有内容都转换为二进制文件,语言中的任何更改都不会影响已编译的程序

  • 像Python这样的解释语言没有任何变量前缀.向后兼容性重大更改将持续到该语言的下一个主要版本. (2认同)
  • Perl有sigils**和**编译.当然是字节码,但是再一次是`C#`.您应该将*compiled*更改为*static*,因为它更准确. (2认同)

Thi*_*lem 8

因为常量保留字没有$ thing

不要试图比较编程语言的语法......他们是如此不同.:)


Hal*_*gür 8

因为它的根源在于Perl:PHP History

  • 对于选民来说:你想简单说明原因吗? (2认同)

Dig*_*oss 6

因为有些语言是丑陋的特殊脚本kludges并使用愚蠢的技巧来提醒"解析器"它有工作要做的事实.

其他语言是真正的语言设计工作,使用真正的变量名称而不是丑陋的宏语法......

使用的一种相当不错的语言$是Perl,但我可能会指出Perl6掉了它.

  • **幸运的是**Perl 6没有丢弃印记,否则它将不再是Perl. (4认同)
  • 在20世纪70年代,愚蠢的技巧可能是合理的,因为在编译器上编写代码比在人类阅读时更容易. (3认同)