3

私は、すべての意図と目的のために、警告をスローする理由がまったくないように見える連想配列を持っています。ソースコード全体は次のとおりです。

<?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: 明確にするために、空白自体が削除されると、コードは正常に実行されます。

4

2 に答える 2

0

これについて完全に気が狂って、約1時間頭をぶつけました。

Notepad++ では、通常のスペースと nbsp の間に違いはありません。

この文字が実際にコードにどのように組み込まれたのか疑問に思われる場合は、これが私の取得方法です: altgr + space

于 2014-10-14T15:35:48.507 に答える