Flash将字符串存储为数组中的键

时间:2009-10-08 10:57:22

标签: flash arrays actionscript actionscript-2

在php中我能做到:

$prices['ford']['mondeo']['2005'] = 4500;
$prices['ford']['mondeo']['2006'] = 5500;
$prices['ford']['mondeo']['2007'] = 7000;

并且可以这样做:

echo sizeof($prices['ford']); // output 1
echo sizeof($prices['ford']['mondeo']) //output 3

如何在Flash中实现它。 Flash似乎不喜欢STRINGS作为ARRAY KEYS,是吗?

3 个答案:

答案 0 :(得分:2)

要使用类似关联数组的功能,您可以使用Object;

var prices:Object = new Object();
prices.ford = new Object();
prices.ford.mondeo = new Object();
prices.ford.mondeo['2005'] = 4500;
prices.ford.mondeo['2006'] = 5500;
prices.ford.mondeo['2007'] = 7000;

或只是

var prices:Object = {
  ford: {
    mondeo: {
      2005: 4500,
      2006: 5500,
      2007: 7000
    }
  }
};

Actionscript在php中没有类似sizeof的内置函数,但你可以轻松编写自己的函数:

function sizeof(o:Object):Number {
    var n:Number = 0;
    for (var item in o)
        n++;
    return n;
}

只需在php中使用它:

trace(sizeof(prices['ford'])); // traces 1
trace(sizeof(prices['ford']['mondeo'])); // traces3

答案 1 :(得分:1)

在Flash中使用整数对数组进行索引,如果要在字符串上建立索引,请使用Object。

答案 2 :(得分:1)

var array:Array = [];
array['name'] = "the name";
array['something'] = "something else";
trace(array.length);

它跟踪0.所以是的,虽然允许flash,但它并不像字符串那样真正喜欢字符串。 Arraydynamic class(如Object),您可以根据需要向各个对象添加属性。 array['name'] = "myname"array.name = "myname"相同。

也就是说,您可以将数组分配给array['name']并读取其长度。

var array:Array = [];
array['name'] = new Array();
array.name.push(1, 2, 3);
trace(array.length);//traces 0
trace(array.name.length);//traces 3