如何在数组中推送数组而不连接?

时间:2015-06-15 06:16:01

标签: javascript php arrays

我有以下php代码,它提供了一个名为“markers”的数组变量。

window.markers = [];

<?php if( have_rows('actin_center') ): ?>
<?php while( have_rows('actin_center') ): the_row(); ?>

window.markers.push( [ ['<?php the_sub_field('center_name'); ?>', '<?php the_sub_field('center_address'); ?>', <?php the_sub_field('latitude'); ?>, <?php the_sub_field('longitude'); ?>] ] );

<?php endwhile; ?>
<?php endif; ?>

到目前为止这个工作正常但是将数组(在警告时)返回为:

酷中锋1,Rewitz Gofella,1234 Lorem,50,50,酷中锋2,Lorem Ipsum,1234 Quosque,60,60,酷中锋3,Veniat elaborat,1234 Ipsum,70,70

我需要的是以下形式保持数组(sub_fields),因为它们最初是在数组内部而不是连接它们。为:

var markers = [
    ['First Center','First Address',50,50],
    ['Second Center','Second Address', -25.363882,131.044922],
    ['Third Center','Third Address', 10.363882,95],
    ['Fourth Center','Fourth Address', -50,-90],
    ['Fifth Center','Fifth Address', 30,5],
];

正如您在上面的代码中看到的,我尝试使用简单的双括号[[]],但这不起作用。 如何正确完成? 非常感谢你的帮助。

PS: 如果有人对我的问题表示不满,请非常友好地告诉我为什么这样我才能学到一些东西。

1 个答案:

答案 0 :(得分:1)

由于评论:
alert( [[1,2][3,4]] )会弹出错误 1,2,3,4
alert( JSON.stringify([[1,2][3,4]])会弹出[[1,2],[3,4]]

.push([1,2])会将数组添加到markers:[[1,2],[3,4],[5,6]]
.push(1,2)会将元素添加到markers:[1,2,3,4,5,6]

但更好的方法是,不要执行javascript .push(节省客户端CPU时间) 以这种方式在javascript中定义数组:

window.markers = [
<?php while( have_rows('actin_center') ): the_row(); ?>
  ["<?php the_sub_field('center_name');?>","<?php the_sub_field('center_address'); ?>",<?php the_sub_field('latitude');?>, <?php the_sub_field('longitude');?>],
<?php endwhile; ?>
];

结果应该是这样的

window.markers = [
['First Center', 'First Address', 50, 50],
['Second Center','Second Address',-25.363882, 131.044922],
[... ,... , ... ,...],
];