AS3とPHP連携 その3 – 配列・連想配列の渡し方

Filed under AS3, PHP

AS3とPHPの連携方法のサンプル。

今回は、PHPに配列(Array)や連想配列(Object)を渡します。

サンプルはこちら

以下、ソースです。

AS3側

package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.net.URLVariables;
	import flash.text.TextField;

	[SWF(backgroundColor="0xFFFFFF")]
	public class php_access3 extends Sprite
	{
		private const ary1:Array=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
		private const ary2:Object={No1:"cat", No2:"dog", No3:"pig"};

		public function php_access3()
		{
			// ステージの設定
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align=StageAlign.TOP_LEFT;

			// リクエストの準備
			var req:URLRequest=new URLRequest("PHPファイルまでのパス");
			req.method=URLRequestMethod.POST;

			// PHPに渡すパラメータ
			var param:URLVariables=new URLVariables();

			// 配列を渡す
			for(var i:int=0; i < 10; i++) param["ary1[" + i + "]"]=ary1[i];

			// Object型(連想配列)を渡す
			for(var key:String in ary2) param["ary2[" + key + "]"]=ary2[key];

			req.data=param;

			// ローダー
			var loader:URLLoader=new URLLoader();
			loader.dataFormat=URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE, onComplete);
			loader.load(req);
		}

		// 通信が成功したら実行される関数
		private function onComplete(e:Event):void
		{
			var loader:URLLoader=e.target as URLLoader;
			loader.removeEventListener(Event.COMPLETE, onComplete);

			// 結果を表示
			var t:TextField=new TextField;
			t.text="PHPに普通の配列と連想配列を渡します。\n\n";
			t.width=500;
			addChild(t);
			t.x=t.y=10;
			var data:URLVariables=new URLVariables(loader.data);
			for(var key:String in data) t.appendText(data[key] + "\n\n");
		}
	}
}

PHP側

<?php
	// Flash側から配列を受け取る
	$ary1 = $_POST["ary1"];
	$ary2 = $_POST["ary2"];

	// 変数いろいろ
	$str1 = "";
	$str2 = "";
	$sum = 0;
	$len = count($ary1);

	// ary1の中身を解析
	for($i = 0 ; $i < $len ; $i++)$sum += $ary1[$i];

	// ary2の中身を解析
	foreach($ary2 as $key => $val) $str2 = $str2.$key.":".$val."    ";

	// 出力
	echo "result1 = sum = ".$sum;
	echo "&";
	echo"result2 = ".$str2;
?>

Post a Comment

Your email is never published nor shared.