[PHP-users 27572] Re: 配列の添字部分を角括弧を含めて変数指定

luler_works@yahoo.co.jp luler_works @ yahoo.co.jp
2005年 11月 22日 (火) 12:16:34 JST


お世話になっております。山口です。

> >  Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE,
> 
> 角括弧(正式にはブラケットと言います)はエスケープしないと
> parse errorになりますのでそのようなエラーが出るのかと。
> 
> つまりきちんと文字列→変数、配列に評価されていれば良いのですが
> parse errorになるということは「['key]」という文字列で
> 評価されてしまっているからparse errorになります。
> LinuxやUnixでブラケットをエスケープしないと動作しないのと同じ。
> 
> この場合$hairetsuは配列として保持されているのでエスケープしても
> value=Array\['key'\] となります。
> 最終的に何をしたいのかわからないのでこれを参考に考えてください。
古城様、ご回答ありがとうございます。

階層が可変の多次元配列にループ処理をしたいと考えており
このような質問をしたのですが、構文的にエラーのようですので
設計から考え直してみたいと思います。

> こんな感じで正規表現で逃げるのはなしですか?
> 
> $hairetsu=array('key'=>'value');
> $a="['key']";
> //$a='["key"]';
> $b = $hairetsu[ereg_replace("^\[('|\")(.+)('|\")\]$","\\2",$a)];
> echo $hairetsu['key'].'='.$b;
kuro様の正規表現も大変参考になりました。

ありがとうございました。





PHP-users メーリングリストの案内