Как создать ассоциативный массив в JS - PullRequest
1 голос
/ 01 марта 2012
var stds = [];
<?php
  foreach ($this->students as $key => $value){
?>
    var smval = "<?php echo $value?>";
    stds.push( smval );
<?php
}
?>
alert("stds"+stds);

alert ("stds" + stds); // печатать abc, bcd, efg и т. Д. *

Приведенный выше код отлично работает для отправки имен учеников.Теперь я хочу нажать также студенческие коды, которые находятся в значении $ key.Как я могу создать ассоциативный массив для этого

Ответы [ 4 ]

3 голосов
/ 01 марта 2012

Самый чистый и безопасный способ сделать это - преобразовать объект PHP в литерал объекта JavaScript с json_encode :

var students = <?= json_encode($this->students) ?>;

// sample usage
alert (students["Tony"]);   // Tony's student code
alert (students["Geezer"]); // Geezer's student code
alert (students["Vinnie"]); // etc.
1 голос
/ 01 марта 2012
var stds = [];
<?php
  foreach ($this->students as $key => $value){
?>
    stds.push( { 'name': '<?php echo $value; ?>', 'code': '<?php echo $key; ?>' } );
<?php
  }
?>
alert("stds"+stds);

Если быть точным: в JavaScript нет ассоциативных массивов. Вы можете использовать приведенный выше код, который дает вам массив объектов, содержащий ваши данные, или код ниже, который дает вам объект, похожий на тот, который вы используете в PHP.

var stds = {};
<?php
  foreach ($this->students as $key => $value){
?>
    stds[ '<?php echo $key; ?>' ] = '<?php echo $value; ?>';
<?php
  }
?>
alert("stds"+stds);
0 голосов
/ 01 марта 2012

Я думаю, что вы пытаетесь сделать больше

stds[<?php echo $key?>] = '<?php echo $value; ?>';

или вы можете попробовать сделать это в рамках объекта, показанного здесь:

http://jsfiddle.net/u3Muk/

0 голосов
/ 01 марта 2012
var stds = <?php echo json_encode( $this->students); ?>;

Не уверен, какие ключи в вашем массиве

alert( stds[0][ key1 ] +'   ' + stds[0][ key2 ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...