为什么PHP json_encode会变平?

时间:2018-05-16 17:34:59

标签: javascript php arrays

我有这个日期的PHP数组($savedRequestDates):

Array ( [0] => 2018-03-29 10:56:31 [1] => 2018-03-29 10:58:09 [2] => 2018-04-12 11:28:41 [3] => 2018-04-12 13:07:25 [4] => 2018-05-09 13:08:07 ) 

在同一个.php页面的底部,我有这个:

<script type="text/javascript">
var sessions = new Array('<?php echo json_encode($savedRequestDates); ?>');
console.log(sessions[0]);
</script>

console.log(sessions[0]);返回:

["2018-03-29 10:56:31","2018-03-29 10:58:09","2018-04-12 11:28:41","2018-04-12 13:07:25","2018-05-09 13:08:07"]

为什么JavaScript数组在0索引处变平?如果我尝试console.log(sessions);它会返回一个带有一个变量的数组,而不是5,因为php数组清楚地显示了。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:6)

发生这种情况是因为您要从PHP中包装另一个数组(new Array)。只需删除new Array部分就可以了。

var sessions = <?php echo json_encode($savedRequestDates); ?>;

答案 1 :(得分:0)

从我看到的json_encode调用将创建一个完整的JSON对象而不仅仅是数组的内容。您将PHP生成的数组的整个输出作为索引0包含在new Array

因此删除new Array会生成您要查找的内容。

试试这个:

<script type="text/javascript">
var sessions = <?php echo json_encode($savedRequestDates); ?>;
console.log(sessions);
</script>

你应该看到整个阵列。