我有一个关联数组,出于所有意图和目的,出现,绝对没有理由抛出警告。整个源代码如下:
<?php
$entries = array(
array('date' => '2012-08-12', 'change' => '-19'),
array('date' => '2012-08-13', 'change' => '-21'),
array('date' => '2012-08-14', 'change' => '-19'),
array('date' => '2012-08-15', 'change' => '-17'),
);
foreach ($entries as $entry) {
print $entry['date'] . ': ' . $entry['change'] . '<br/>';
}
对我来说一切都很好,但是当我在浏览器中查看输出时,我收到以下错误消息:
在 / strong> /Applications/MAMP/htdocs/wtf2.php 5解析错误:语法错误,意外的T_ARRAY,期待')' >
我看得更近一点,然后发现在第4行,似乎有一两个尾随空间(起初我甚至没想过两次)。但是,当我复制空格时,将其粘贴到一个新文档中(第2行):
<?php
$whitespace = ' ';
print rawurlencode($whitespace);
...然后在我的浏览器中查看输出,这就是我所看到的:
%C2%A0%20
我会问,“这是怎么做到的?”但我真的认为这不是一个可行的问题。所以我的实际问题是:像这样的空格与其他任何空格有什么不同(特别是当它通过PHP解释器时会导致致命错误)?有没有办法防止将来发生这种情况?
PS:我正在运行PHP版本5.3.20(在Mac上通过MAMP Pro)。
PPS:澄清一下,当白色字体本身被删除时,代码运行得很好。
答案 0 :(得分:4)
你所拥有的是一个UTF-8编码的非破坏空间(%C2%A0
,又名
),它破坏了PHP的解析器。这是PHP的一个已知问题,标记为“无法修复”,因为人们“可能会将此字符用作标识符的一部分”。请参阅Request #38766 Nonbreaking whitespace breaks parsing。
答案 1 :(得分:0)
Notepad ++没有显示常规空格和nbsp之间的任何差异。
如果你想知道这个角色是如何进入你的代码的,那就是我得到的: altgr + space