PHP为什么在每个变量前面都要加美元符号?

18

可能重复:
为什么PHP变量以$符号开头?

我已经看了其他编程语言,似乎大多数编程语言都没有任何符号来显示某个东西是一个变量。那么PHP解释器需要这样的标志有什么原因呢?当其他语言的解释器/编译器能够在没有这样的符号的情况下判断出什么是变量时,PHP是否更快?这是否使工程师更容易创建一个解释器?还是为了让代码更易于阅读?或者其他原因?

奖励问题:如果有一个好的理由来表示一个变量的符号,为什么不是所有编程语言都有呢?

这个是我能找到的最接近的问题,尽管问题似乎不清楚,答案从“只是因为”到“这就是为什么它是$而不是其他一些符号”。那个线程似乎没有涉及美元符号的实际目的。

编辑:从评论中的混乱可以看出,我的问题肯定表述不清楚。澄清一下,我的问题不是“为什么变量前面的符号是$而不是其他符号?”那个问题已经有了四个很好的答案。我的问题是“为什么在PHP中有任何符号都可以表示一个变量?将符号放在变量前面有什么用?”


3
你的最后一个问题和你之前的问题几乎一模一样,且已有很好的答案。你还需要什么? - Iznogood
1
这个答案不够令人满意吗? - Felix Kling
@lala 嗯,这也是有解决办法的。从在“hello $name”中使用它到$在字符集中很常见。实际上,这个问题已经得到了很好的回答。 - Iznogood
@Felix Kling,哪一个?被接受的答案吗?那只是说因为旧的编程语言已经这样做了。它并没有说明在那里放置符号的实际目的。 - lala
@Iznogood,就像那些答案一样,你告诉我为什么符号是$而不是其他符号。你没有告诉我为什么PHP在变量前面有一个符号,而其他编程语言没有。 - lala
显示剩余2条评论
3个回答

19

在变量的符号表示方面,可以使字符串内插更加简单明了。Shell、Perl 和 PHP 诞生的背景之一是需要快速且轻松地处理字符串,包括内插操作,因此使用变量前缀似乎是个不错的主意。

例如,在 PHP 中:

$var = 'val';
$strVar = "The var is $var";

与通常的字符串格式化相比:

var = 'val'
strVal = 'The var is %s' %(var)

8
为什么不直接使用 var = 'val'; $strVar = "The var is $var";为什么不使用这种方式: $var = 'val'; $strVar = "The var is $var"; - Bogdan Mart
@BogdanMart 因为这会创建两个约定,其中一个是多余的?语言应该被简化;请记住,字符串插值是 PHP 创建的主要功能之一...(另外,顺便说一下,我不认为 $var 很漂亮,我更喜欢其他类型的字符串插值,但它肯定在模板字符串方面很有用) - user719662
肯定有更大的原因,因为JavaScript具有美观的反引号字符串符号记法,带有美元符号和花括号:var = 'val'; strVar = `The var is ${var}`;, 它适用于不止变量。当然,在PHP中也可以使用"The var is {$var}",同样一眼就能看出插入变量值的位置。 - s3c

1

我认为这只是源于它的起源。
Unix shell 和 Perl 就是例子。
如果你更仔细地观察 PHP,你会发现它与 shell 有很多共同之处。
因此,你最好在那里提出你的问题 :)


-1
在 PHP 中,您不必在使用变量之前设置它,而在其他语言中,您必须在使用变量之前声明变量,例如 var MyVar = 'my value' 或定义将要保存的内容类型。
我不确定,但我认为添加符号的目的是为了不必声明变量并让 Apache 知道这是一个变量。

好的,你能诚实地说你在PHP中从未遇到过“未定义变量”错误吗?或者你是从哪里得到了变量不需要在PHP中声明的事实? - Industrial
1
在PHP中,变量在添加值之前不需要声明。我非常确定。 - Luis
3
虽然不一定需要声明,但是读取一个未声明的变量会引发“E_NOTICE:未声明的变量”错误。 写入变量会声明它,这是正确的。 - Piskvor left the building

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