【问题标题】:How can I change my php server settings so that writing $x[y] == $x['y']? [closed]如何更改我的 php 服务器设置以便编写 $x[y] == $x['y']? [关闭]
【发布时间】:2012-02-21 17:29:47
【问题描述】:

正如标题所说:

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

编辑:

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

【问题讨论】:

  • 永远,永远,永远不要那样做。不带引号的实体是常量。
  • 没有理由投反对票,这个问题在 PHP 环境中是合法的,实际上允许这种行为
  • 写你自己的PHP衍生语言,其中常量是字符串?或者不要懒到输入一对' 会让你感到痛苦。
  • @ElzoValugi:只有当你盲目飞行时。此外,OP 没有问她/他想知道什么可以澄清问题。
  • @hakre Downvoting 应保留用于极端情况。它不能代替交流和编辑。

标签: php variables settings


【解决方案1】:

没有服务器设置可以做到这一点。 Cyclone 的说法是正确的。

为什么 $foo[bar] 错了?

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

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

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

Source.

【讨论】:

  • $foo[bar] 如果您尝试访问常量 bar 并没有错。
  • 这就是我的意思,读到最后。
【解决方案2】:

不清楚你的意思……

$x[y] 

$x['y'] 

与服务器设置无关

一切都是为了没有错误的代码。

$x[y] 

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

$x['y'] 

修复您的代码并使用 'y',这样 PHP 就不必猜测您的意思,或者发出警告来告诉您您做错了什么

【讨论】:

  • 好吧,伙计们。感谢您向我澄清,我收到了一堆由高级程序员编写的代码,所以我只是在检查我是不是疯了。 ..
【解决方案3】:

您应该只在编写字符串时使用该方法,此时 PHP 不会寻找常量。例如,可以这样写:

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

但在您引用数组索引时,请始终使用引号。

【讨论】:

    【解决方案4】:

    我认为这是不可能的。您必须将 y 定义为常数,值为“y”。 例如

    define('y','y');
    

    我们知道这很愚蠢。

    【讨论】:

      【解决方案5】:

      你为什么要做这件事。

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

      这里没有服务器设置。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-29
        • 2021-07-24
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-18
        相关资源
        最近更新 更多