为什么PHP变量以$符号开头?

40

有没有人考虑过这个问题。为什么我们必须写 $var_name = value; 而不是 var_name = value;?是的,我知道这是 PHP 使用的语法规则,但为什么它是一个 $ 符号呢?


2
你回答了你的第一个问题(这是一个语法规则)...我想你的意思是要问,“为什么我们必须写$var_name = value;而不是#var_name = value;@var_name = value;”? - Justin L.
2
很可能它来自Perl,PHP的某些部分就是基于Perl构建的。 - user142162
也许它来自Linux shell变量? - Kamil Szot
1
不是答案,但是有“$”符号使得识别变量更容易。 - ggfan
4个回答

49

因为 PHP 基于 Perl ,而 Perl 使用 $ ,尽管 Perl 使用的符号具有意义且用于表示数据类型(例如,@ 用于表示数组),但 PHP 只使用了 $

PHP 在其早期阶段是 Perl 的一个简化版本,但随着时间的推移,它融合了更多的 Perl 特性,尽管有人可能认为 PHP 长期以来是 Perl 的一个简单原始版本,因为在 PHP 5.3 之前它不包括其他语言中已存在的特性,比如闭包/命名空间。

http://en.wikipedia.org/wiki/PHP

Perl 的创建者 Larry Wall 受到 Shell 脚本的启发而使用了 $http://en.wikipedia.org/wiki/Sigil_%28computer_programming%29


1
不是语言的错,而是廉价主机不愿意升级。PHP作为一门独立的语言正在不断发展。 - Aaron Butacov
4
即使您使用最新版本的PHP,与Python/Haskell/Perl(插入其他语言)相比,它仍然缺乏很多功能。存在更好的语言,具有更多的特性,并且更有组织,只是不像PHP那样受欢迎和易于接触。我说这话的角度是作为一个比使用其他提到的语言更多地使用PHP的人。 - meder omuraliev
5
PHP现在支持闭包、命名空间等功能。 - Jürgen Paul
我相信“TRUE BASIC”也使用美元符号构造来表示前置字符串变量。它的写法可能是string$ = "Hello"。我同意,这确实是一个相当奇特的字符。 - Franco Selem
@mederomuraliev 不错的提到了 Haskell!Simon 和 JP 会感到自豪的。 - Kellen Stuart

9
这在计算机语言中已经很常见了,早在Perl之前就有了!例如,请看Commodore 64 BASIC。
10 PRINT "WHAT IS YOUR NAME?"
20 INPUT A$
30 IF A$="BAHKTIYOR" THEN PRINT "HEY CHECK OUT THAT DOLLAR SIGN"

在BASIC中,$符号在变量名后面。

8

在所有变量前加上$符号可以使代码更易于解析,并且符合“Hello $var”将变量嵌入字符串的想法。


6
有趣的回答:
把PHP变量想象成人,你给一个人命名并分配工作!
但是如果你不付钱,那个人就会拒绝工作,所以要先提供一美元 :) $Jack = "开我的车" ;
只是为了给“游戏”带来乐趣!享受吧!
关于真正的回答: $符号在计算机编码早期被选择,因为它是几乎所有字符集代码中都存在的标志,并且在编程语言中很少需要使用!

10
美元符号表示价值。 - Babiker
@Babiker,没错,这更或多少是我有趣回答的目标!;) - Zuul
@Babiker,好的了解...我只是不知道关于负投票,因为我的美元符号历史知识相当不错,而且我的15年编程书证明了这一点 ;) - Zuul
3
你最初发帖时没有给出“真正”的答案。 - John Kugelman
3
@John Kugelman,没错,我确实需要编辑我的答案,但那是我和我的鼠标之间的个人战争 ;) (有时候我想选择一段文本以添加“评论”标记,而我的鼠标则决定删除所选的文本...这是我们之间的个人问题);) - Zuul
好的,好的,叔叔!您太过友善和愉快了,让人下不了负评。 - John Kugelman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接