2010-04-01 49 views
2

嘿所有,标题可能会引起误导,但我不知道写它的正确方法。AS3相当于PHP的关键数组

基本上,我该怎么办的AS3相当于这个PHP代码:

return array('x' => 0, 'y' => 0); 

回答

0

你可以做这样的事情

var myArray:Array = new Array({x:'0'},{y:'1'},{x:'2'}); 

var myArray:Array = new Array({x:'0',y:'1'},{a:'1',b:'2'}); 
+0

您可以使用对象作为关联数组,但为什么要将这些对象放入新数组中? – 2010-04-01 21:06:39

+0

这样做是为了使阵列连续。这样你就可以维护数组的索引。如果你不关心数组的索引,那么使用对象更好。 – Tempname 2010-04-01 21:12:56

+2

关于这种方法的奇怪之处在于,您现在需要执行'myArray [0] ['x']','myArray [1] ['y']'等等,而不仅仅是'myArray ['x ']'或'myArray ['y']'。大多数人不这样做,只是使用普通的对象。 – davr 2010-04-05 16:04:02

2
private var map:Dictionary = new Dictionary(); 
map["x"] = 0; 
map["y"] = 0; 
+0

字典与普通对象相比具有一些优点,但有两个主要缺点:1.更多的开销,以及2.更多的代码要写入(不能仅仅执行'{x:0,y:0}',只能使用语法如上所示) – davr 2010-04-05 16:05:37

3

的标准的做法就是这样。要记住的主要事情是AS3中的'Object'几乎等同于PHP的关联数组。

var obj:Object = {x:0, y:0}; 

trace(obj['x']); // like in PHP 
trace(obj.x); // also valid 

// AS3 version of foreach in PHP 
for(var key:String in obj) { 
    trace(key +" = " + obj[key]); 
}