不带引号的PHP数组键字符串

不带引号的PHP数组键字符串,php,superglobals,Php,Superglobals,我正在将文件移动到服务器上,并在“mode”中使用类似于$\u GET[mode]的变量,但不使用“”(单引号)。它在本地运行得很好,但在服务器上我收到了通知。。如何克服这个问题?这是我的phpinfo文件 我们有没有办法在服务器上也使用相同的行为?您如何克服E\u通知中抱怨您忘记了字符串周围的引号的问题 在字符串周围添加引号 $_GET['mode'] 此外,本地服务器上的错误报告级别似乎还不够。它应该很高,以便在开发网站/应用程序时看到这些类型的错误 在生产服务器上,它可能设置得更低。引

我正在将文件移动到服务器上,并在“mode”中使用类似于$\u GET[mode]的变量,但不使用“”(单引号)。它在本地运行得很好,但在服务器上我收到了通知。。如何克服这个问题?这是我的phpinfo文件
我们有没有办法在服务器上也使用相同的行为?

您如何克服
E\u通知中抱怨您忘记了字符串周围的引号的问题

在字符串周围添加引号

$_GET['mode']

此外,本地服务器上的
错误报告级别似乎还不够。它应该很高,以便在开发网站/应用程序时看到这些类型的错误

在生产服务器上,它可能设置得更低。

引用

为什么$foo[bar]错了?

始终在字符串文字数组索引周围使用引号。例如,
$foo['bar']
是正确的,而
$foo[bar]
不是。但是为什么呢?在旧脚本中经常遇到这种语法:


这是错误的,但它是有效的。原因是此代码有一个未定义的常量(
bar
),而不是字符串(
'bar'
-请注意引号)。PHP将来可能会定义常量,不幸的是,对于此类代码来说,这些常量具有相同的名称。它之所以有效,是因为PHP会自动将裸字符串(与任何已知符号都不对应的无引号字符串)转换为包含裸字符串的字符串。例如,如果没有定义名为
bar
的常量,那么PHP将替换字符串
中的“bar”
并使用该常量

换句话说:
mode
是一个未定义的常量

引述:

如果使用未定义的常量,PHP会假定您指的是常量本身的名称,就像将其称为字符串一样(常量vs“常量”)。当发生这种情况时,将发出一份通知。另请参见上的手动输入(除非将第一个条形图作为常量)。如果只是想检查是否设置了常数,请使用函数


解决方案:在键周围加引号。

使用单引号。它不能“完美地”工作,当PHP告诉你“嘿,你不应该这样做!”时,你就忽略了它。你为什么要这样做?这是一种不好的做法,会引发你所看到的问题……我知道我可以使用电子通知,但我不想使用它……移动会很麻烦everything@June:来吧。每次一个问题。@June可能会有很多麻烦,但您现有的代码不正确。要么修复问题,要么收到错误消息。你的选择。是的,您可以命名使用/命名变量,如
$\u LANG
或您选择的任何变量,但a)如果未来版本的PHP决定定义这些变量,它可能会破坏您的代码,则不建议这样做,b)它们不会是超全局变量-(令人烦恼)无法在PHP中定义自定义超全局。
模式
是未定义的常量。:)
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>