Flashから配列を外部のPHPにHTTPリクエストする(ActionScriptの可変変数)

Flash制作も佳境に入ってきたけど、最後の最後で思いっきりはまってしまった。
まあこれは例だけど、Flashで入力したデータをPHPで受けようとして、そこに配列のデータが含まれてた場合の話。
これが普通にフォームとかだと

<form action="target.php" method="post">
<input type="radio" name="radio[1]" value="1" />radio 1-1<br />
<input type="radio" name="radio[1]" value="2" />radio 1-2<br />
<input type="radio" name="radio[2]" value="1" />radio 2-1<br />
<input type="radio" name="radio[2]" value="2" />radio 2-2<br />
<input type="submit" value="submit" />
</form>

とかやると、$_POST['radio']が配列になるから便利なんだけど、AcrionScriptのLoadVars.sendを使うと、配列がカンマ区切りのデータにまとめられて送られてしまう。
調べた感じtoStringで配列をString型にするとそうなるらしいので、Flashが気を利かせてくれてるみたい。いらん気をまわすな。


仕方ないので、上記HTMLをGETでフォーム送信した時みたいに、ブラケットをHTMLエンコードすればいいじゃん!って思ったけど
LoadVarsで送る時のパラメータ名は変数名そのまま使ってることにナノセックで気づく。変数名に%とか使えないわけで。
PHPなら可変変数でなんとかできるのに、と思ってASの可変変数をググってみたらこのページが出てきました。
http://portfolio.t2-designing.com/log/?id=240
これを元にちょこちょこやってみてようやく目的達成。無事配列として受け取れました。
せっかくなのでサンプルコード書いておこう。

my_array = new Array();
my_array[1] = 1;
my_array[2] = 2;

var my_lv = new LoadVars();
for (key in my_array) {
    my_lv['array[' + key + ']'] = my_array[key];
}
my_lv.send('target.php', 'post')

これでmy_lv.array[1]とかって変数が(AS上は配列じゃないけど)出来たので、$_POST['array']に配列として入ってきます。