2010-04-01 3 views
2

Эй, все, название может быть abit вводящим в заблуждение, но я не знал, как правильно его написать.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

Вы можете использовать объекты как ассоциативные массивы, но почему вы помещаете эти объекты в новый массив? –

+0

Это делается так, чтобы массив был смежным. Таким образом, вы можете поддерживать индекс своего массива. Если вам не нужен индекс массива, то лучше использовать объект. – Tempname

+2

Странная вещь об этом методе заключается в том, что теперь вам нужно выполнить 'myArray [0] ['x']', 'myArray [1] ['y']' и т. Д. Вместо просто 'myArray ['x '] 'или' myArray [' y '] '. Большинство людей этого не делают и просто используют простой объект. – davr

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

Словарь обладает некоторыми хорошими преимуществами по сравнению с обычным объектом, но имеет 2 основных недостатка: 1. дополнительные накладные расходы и 2. больше кода для записи (не может просто делать '{x: 0, y: 0}', может использовать только синтаксис, как показано выше) – davr

3

стандартный способ сделать это так. Главное помнить, что «Object» в AS3 почти эквивалентен ассоциативному массиву 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]); 
} 
Смежные вопросы