【问题标题】:PHP 5.4 associative array giving syntax errorPHP 5.4 关联数组给出语法错误
【发布时间】:2015-07-13 19:52:22
【问题描述】:

我有一个简单的关联数组,声明如下:

static private $foo = [
        16 => 'xyz',
        7 => 'x',
        8 => 'y',
        9 => 'xy'
];

当我对此声明运行语法检查时,我得到以下信息:

Parse error: syntax error, unexpected '16' (T_LNUMBER), expecting ']

我在这里做错了什么?

【问题讨论】:

  • 您缺少 9 => 'xy' 之后的最后一个单引号,并且 static 和 private 关键字是错误的。
  • 对不起,当我粘贴到这里时,这只是一个错字。单引号实际上存在于真实代码中。
  • 不用担心。交换静态和私有,这样你就有了private static $foo
  • 也试过了@BenSwinburne 很遗憾没有雪茄
  • private static- static private 对解析器没有任何影响 ;-) 既然这显然是类定义的一部分,您能否发布一个完整的脚本?尝试创建最小但完整的脚本,以展示您所描述的行为。

标签: php php-5.4


【解决方案1】:

在数组元素之前的每一行开头都有一些奇怪的字符(可能是 BOM,我没有检查它)(请参阅http://3v4l.org/ZnqIp)。这些字符是不可见的,因此它们的存在会导致像这样的奇怪错误。

它们在粘贴到 Notepad++ 时显示为小方块:

我删除了它们,试试这个代码:

<?php

class Foo {
    static private $foo = [
        16 => 'xyz',
        7 => 'x',
        8 => 'y',
        9 => 'xy'
    ];
}

它应该可以正常工作(另请参阅http://3v4l.org/WQGWA)。

【讨论】:

  • 不错。对于空白的各个部分,我得到 ASCII 值 226、128、130 和 32
【解决方案2】:

如果您在任何十六进制编辑器中查看复制/粘贴的代码,您会发现奇怪的不可见字符使 PHP 感到困惑。只需进行干净的复制/粘贴,您就可以开始了。

当您使用它时,请检查您的编辑器配置/编码。

编辑:一个简单的 Unicode 查找说它是所谓的EN SPACE 字符(十六进制序列E2 80 82)。您如何设法将其放入您的代码中,我无法理解。

【讨论】:

  • 它可能是使用 css content从网页剪切粘贴的
【解决方案3】:

我刚刚尝试复制并粘贴您的代码。出于某种原因,我得到了同样的错误。然后删除数组中的所有空格并再次添加空格。现在一切都解决了。不知道为什么会这样。试着定义像

这样的数组
 private static $foo = [16 => 'xyz', 7 => 'x', 8 => 'y', 9 => 'xy'];

如果可行 - 添加换行符。一些复制和粘贴魔法把事情搞砸了。

【讨论】:

    【解决方案4】:

    我想我知道你的代码发生了什么。它与静态私有无关。

    我在上面复制了您的代码并进行了测试,并得到了相同的解析错误。我重组了你的数组,似乎你添加了空格而不是制表符。我对 PHP 比较陌生,但是我用制表符替换了空格,它似乎可以工作。

    private static $foo = [
        16 => 'xyz',
        7 => 'x',
        8 => 'y',
        9 => 'xy'
    ];
    

    【讨论】:

    • PHP 对空格不敏感,除了几个关键区域。
    【解决方案5】:

    试试这个

    private static $foo = array( 
      16 => 'xyz', 
      7 => 'x', 
      8 => 'y', 
      9 => 'xy'
    );
    

    【讨论】:

      猜你喜欢
      • 2014-09-09
      • 2015-06-14
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多