'(花式撇号?)在PHP中是什么意思
我得到了这个示例 PHP 代码:
if ( $new_value && ’ == $old_value )
- 之后我怎么称呼这个角色
&& - 它有什么作用
- 我如何在键盘上打字,以及
- 最重要的是,我可以在人类可读的地方使用什么,并且看起来不像我试图炫耀我对晦涩代码速记的了解?
我在这里找不到:参考 — 这个符号在 PHP 中是什么意思?并且由于 Google 忽略了它,并且大多数其他搜索都将’其视为'(撇号),因此我将空空如也。
回答
这个字符在 PHP 中没有特殊含义,可能只是您正在阅读的代码中的一个错误。例如,它可能本打算用作''(一个空字符串),但被某些 Markdown 样式的格式系统搞砸了。
在 PHP 8.0 之前,由于两个稍微奇怪的特性的组合,它实际上不会产生错误:
- 任何可能是有效常量名称但当前未定义为常量的名称都被视为字符串,就好像您使用与名称相同的值定义了常量。这个特性在 PHP 8.0 中被移除了。
- 任何超出 7 位 ASCII(即值 128 到 255)的字节都允许出现在变量或常量名称中,即使在开头也是如此。由于此字符不是 ASCII,它将使用一组匹配此规则的字节以 UTF-8 格式呈现 - 请注意,PHP 实际上并不关心它们在 UTF-8 中的含义,它只是看到它们不是-ASCII 并让您可以在任何地方使用它们。
结果’ == $old_value实际上被解释为'’' == $old_value,即“是否$old_value匹配包含字符的字符串’?”
在 PHP 8.0 中,不再允许这种解释,并且您将在运行时收到未定义常量的错误。但是,您实际上可以定义这个常量,并且代码将在从 4.3 到 8.0(包括 8.0)的所有 PHP 版本上运行,完全没有任何错误或警告:
<?php
// Define our oddly-named constant to have a value of 'hello'
define('’', 'hello');
// Compare it against a normal string variable
$foo = 'hello';
if ( ’ == $foo ) {
echo 'It works!';
}
需要说明的是,这并不是特别有用,除非您试图对某人进行恶作剧,否则它只是解释了一个令人惊讶的事实,即这不是语法错误。