私は、すべての意図と目的のために、警告をスローする理由がまったくないように見える連想配列を持っています。ソースコード全体は次のとおりです。
<?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/>';
}
私にはすべて問題ないように見えますが、ブラウザで出力を表示すると、次のエラー メッセージが表示されます。
解析エラー: 構文エラー、予期しない T_ARRAY、5 行目の /Applications/MAMP/htdocs/wtf2.php の ')'が必要です
もう少しよく見てみると、4 行目に、末尾に 1 つまたは 2 つのスペースがあるように見えることがわかりました (最初は、2 度考えたこともありませんでした)。ただし、空白をコピーすると、次のように新しいドキュメントに貼り付けられます (2 行目):
<?php
$whitespace = ' ';
print rawurlencode($whitespace);
...そして、ブラウザで出力を表示すると、これが私が見たものです:
%C2%A0%20
「そもそもどうやってそこにたどり着いたのですか?」と尋ねます。しかし、それは答えるのが現実的な質問だとは本当に思いません。したがって、私の実際の質問は次のとおりです。そのような空白は、他の空白とどのように異なるのですか (特に、PHP インタープリターを実行したときに致命的なエラーを引き起こす点まで)? また、今後このようなことが起こらないようにする方法はありますか?
PS: PHP バージョン 5.3.20 を実行しています (Mac の MAMP Pro 経由)。
PPS: 明確にするために、空白自体が削除されると、コードは正常に実行されます。