PHPとAS3のお作法の違いを残しておく

| コメント(0) | トラックバック(0)

久しぶりにPHPプログラムを書いてみて、改めてActionScriptとの違いに勘が戻るまで時間がかかってしまった。
つまらないことに時間を割かないよう、今回はPHPとActionScriptのお作法の違いを残しておこうと思うと思う。


まずは変数定義として、配列を例に掲載。
PHP

 $item_list = Array("バナナ","みかん","りんご","いちご");
 $cost_list = Array(80,50,120,90);
 $object = Array();

AS3.0

 $item_list = Array("バナナ","みかん","りんご","いちご");
 $cost_list = Array(80,50,120,90);
 $object = Array();

PHPの場合、変数定義に$を付ける。久しぶりに書いたからどうしても忘れてしまう。
あとはnewを付けるとかってところが違うだけ。("var"はPHPでも使うし)


続いて、for文と、配列への要素の追加
PHP

 for( $i = 0 ; $i < count($item_list) ; $i++ ){
  $tmpArray["item"] = $item_list[$i];
  $tmpArray["cost"] = $cost_list[$i];
  array_push( $object, $tmpArray );
 }

AS3.0

  for( var i = 0 ; i < item_list.length ; i++ ){
  var tmpArray = new Array();
  tmpArray["item"] = item_list[i];
  tmpArray["cost"] = cost_list[i];
  object.push( tmpArray );
 }

配列の要素数を数える方法が、PHPではcount(Array)で、ASではArray.lengthという違いがある。
配列への要素の追加方法はASの方が直感的で好き。

 

で、多次元配列になっている連想配列のソート方法はというと・・・
PHP

usort($object, create_function('$a,$b', 'return($a[\'cost\'] - $b[\'cost\']);'));

AS3.0

 object.sortOn("cost",Array.NUMERIC);

PHPの場合、usortというユーザー定義の比較関数を使ってソートするのだ。使い方がちょっと難しいのが難点。
それに比べ、ASではsortOn()で指定してあげるだけ。便利。

 

最後に、連想配列の時の要素の取り出し方。
PHP

 foreach($object as $key => $row){
  print($row["item"]." : ".$row["cost"]."\n");
 }

AS3.0

 その1
 for( var key in object ){
  trace(object[key]["item"]+" : "+object[key]["cost"]);
 }
 その2
 for each( var obj in object ){
  trace(obj["item"]+" : "+obj["cost"]);
 }

なるほど。
AS3で"for each"が追加されたそうなのだが、これだとキーが取り出せないんだよね。
それを考えると、この"for each"は用途が限定されてしまう。(その分、処理が早いのか?)
その点、PHPはキーも、それに対応するオブジェクトもいっぺんに取得できるのでよい。


そんな感じで、違いを残しつつソート部分は完全にメモ。

トラックバック(0)

トラックバックURL: http://www.siesta-design.com/mtadmin/mt-tb.cgi/12

コメントする

2011年1月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31