2014-01-24 4 views
1

я хочу, чтобы создать вложенные элементы объекта в цикле это работает: МануэльСоздание элементов объекта в цикле

$tmp={ "items": { 
      "key1": {"name": "alpha"}, 
      "key2": {"name": "bravo"}, 
      "key3": {"name": "charlie"} 
      } 
} 
     alert($tmp['items']['key2']['name']) 

Но как я могу создать все Vals в цикле ??? что-то вроде:

for (var x = 0; x < 100; x++) { 
    $tmp2={"key"+x: {"name": "name"+x}} 
    $tmp.push($tmp2) 

    } 
     alert($tmp['items']['key0']['name']) 

????

+0

пытались ли вы его? что случилось? –

+0

, вы можете только «нажимать» на массив, а не на объект. Вам нужно будет сделать 'items' массив, а затем сделать' $ tmp ['items']. Push ($ tmp2); ' –

+0

он создаст новые ключи« 0 »,« 1 »($ tmp ['items' ] [0] [ 'key0'] [ 'имя']) – dazzafact

ответ

4

Объявите контейнер для пар ключ/значение вне цикла, затем используйте синтаксис [], чтобы добавить ключи к контейнеру внутри вашего цикла.

$tmp = { "items": {} }; 
for (var x = 0; x < 10; x++) { 
    // $tmp.items is equivalent to $temp["items"] 
    $tmp.items["key"+x] = { "name" : "name" + x }; 
} 

Это приводит к:

{ 
    "items": { 
    "key0": { 
     "name": "name0" 
    }, 
    "key1": { 
     "name": "name1" 
    }, 
    "key2": { 
     "name": "name2" 
    }, 
    "key3": { 
     "name": "name3" 
    }, 
    "key4": { 
     "name": "name4" 
    }, 
    "key5": { 
     "name": "name5" 
    }, 
    "key6": { 
     "name": "name6" 
    }, 
    "key7": { 
     "name": "name7" 
    }, 
    "key8": { 
     "name": "name8" 
    }, 
    "key9": { 
     "name": "name9" 
    } 
    } 
} 
1

Вы можете сделать это:

var $tmp={ 'items': {} }; 

for (var x=0; x<100; x++) { 
    $tmp['items']['key'+x]={ 'name': 'name'+x }; 
} 

alert($tmp['items']['key0']['name']); 

Но ценность $tmp.items.keyN.name просто nameN кажется бессмысленным ..

Смежные вопросы