gpt4 book ai didi

php - ’(花哨的撇号?)在 PHP 中是什么意思

转载 作者:行者123 更新时间:2023-12-05 09:35:28 26 4
gpt4 key购买 nike

我得到了这个示例 PHP 代码:

if ( $new_value && ’ == $old_value )
  1. &&之后的字符怎么称呼
  2. 它是做什么的
  3. 如何在键盘上输入它,以及
  4. 最重要的是,我可以使用什么来代替人类可读的地方,并且看起来不像我在试图炫耀我对晦涩的代码速记的了解?

我在这里找不到它:Reference — What does this symbol mean in 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,即 "does $old_value匹配包含字符 '?"

的字符串

在 PHP 8.0 中,不再允许这种解释,您将在运行时收到常量未定义的错误。但是,您实际上可以定义此常量,并且 the code will run on all PHP versions from 4.3 up to and including 8.0完全没有任何错误或警告:

<?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!';
}

需要说明的是,这不是特别有用,除非你想对某人开个玩笑,它只是解释了一个令人惊讶的事实,即这不是语法错误。

关于php - ’(花哨的撇号?)在 PHP 中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65846246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com