我得到了这个示例 PHP 代码:
if ( $new_value && ’ == $old_value )
- 我该怎样称呼这个角色
&&
- 它有什么作用
- 如何在键盘上输入它,以及
- 最重要的是,我可以使用什么来代替人类可读的位置,并且看起来不像我试图炫耀我对晦涩代码速记的知识?
我在这里找不到它:参考 — 这个符号在 PHP 中意味着什么?因为谷歌会忽略它,而大多数其他搜索都会对待它’
与'
(撇号)我一无所获。
该字符在 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 的所有 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!';
}
需要明确的是,这并不是特别有用,除非您想对某人恶作剧,否则它只是解释了一个令人惊讶的事实:这不是语法错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)