2011-06-28 3 views
1

数字配列の場合、同様の問題が報告されていると思われますが、これは解決されたと考えられますが、配列のインデックスを入れ子にすることはできません(別の配列を参照する配列内の値にアクセスする)。私は別のバグでなければならないので、PHP(5.3.6)の非常に新しいビルドを使用しています。解析エラーを生成します。PHPでのパーサーエラー?

+1

これは5.3.6でやることではないようなものを追加し、それはパーサです5.3.5のエラー。 – tjm

答えて

1

サラウンドは、中括弧で式全体:FYI

echo "{$assocArray[ $fields[$j] ]}  "; 

:これは、部分的に好みの問題ですが、個人的に、私は特にネストされた配列で、ないインライン化アレイを好みます。これはいいですか?

echo $assocArray[ $fields[$j] ] . "  "; 
+0

中括弧はうまくいきます!どうもありがとうございます...しかし、これはかなり奇妙な動作で、私はcanotが仕様の一部であると確信しています。中括弧は他の場所でその頭を後ろに回しますか? – Ala

+0

@Ala:中括弧はトリックではありません。文字列での使用は[PHPマニュアル(http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing)に記載されています。 – Asaph

2

これを試してみてください:

echo "$assocArray[{$fields[$j]}]"; 

はそこに余分な{}に注意してください。 PHPのパーサは一般的に「貪欲ではない」ため、他のほとんどのスクリプト言語よりもずっと早く変数の解析を停止します。それは多次元配列に特に顕著です:

$arr[1] = array(); 
$arr[1][2] = "Hi there" 

echo "$arr[1][2]"; // actually outputs "Array[2]" instead of "Hi There" 
echo "{$arr[1][2]}"; // outputs 'Hi There' as expected 
+0

ありがとう! :)なぜそれが間違っていたのかを知るにはうれしい... – Ala

1
echo $assocArray[ $fields[$j] ]; 

あなたが本当に末尾の空白が必要な場合は、

str_repeat(' ', 5); 
+0

ありがとう!この回避策も機能しますが、最初は回避策を使用することは理想的ではありません。 :)。 – Ala

+0

@Ala:回避策ではなく、単に変数の値を出力するための ''一般的な方法 ''( '' 'の代わりに' ')を使用します。空白を追加する最も簡単な方法は、空白を追加することです: 'echo $ assocArray [$ fields [$ j]]。 ';'。;)しかし、空白は省略します。意味を持つ。 – KingCrunch

関連する問題