如何更改php服务器设置,以便写入$x[y]=$x[';y';]


How can I change my php server settings so that writing $x[y] == $x['y']?

如标题所述:

如何更改php服务器设置,以便写入$x[y]=$x['y']?

编辑:

不,我不懒,我收到了一堆这样写的代码。

没有服务器设置可以做到这一点。旋风说的是对的。

为什么$foo[bar]错了

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

<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

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

来源。

不明白你的意思。。。

$x[y] 

$x['y'] 

与服务器设置无关

这一切都是关于没有错误的代码。

$x[y] 

正在寻找一个名为y的常量,如果该常量不存在,它会警告您,并再次尝试假设您键入错误,并且y是一个值为"y"(相当于)的字符串

$x['y'] 

修复你的代码并使用"y",这样PHP就不必猜测你的意思,也不必发出警告告诉你你做错了什么。

只有在编写字符串时才应该使用该方法,因为PHP不会查找常量。例如,可以写这样的东西:

echo "Hello $row[first_name] $row[last_name]!";

但是,在其他任何时候引用数组索引时,都要使用引号。

我认为这是不可能的。您必须将y定义为一个常量,值为"y"。例如

define('y','y');

我们知道这很愚蠢。

为什么要做这件事。

您正在创建错误的代码。T

这里没有服务器设置。

即使您使用define('y','y');,它也不是一个标准。更改并清理您的代码,而不是去做这样的事情。