【发布时间】:2017-11-18 23:15:19
【问题描述】:
我正在尝试将一个多维数组从 php(在实际场景中动态插入的值)传递给 javascript,然后这些值在 javascript 内部使用,当我尝试使用循环打印相同的值时,这些值没有被打印,当我检查了 array[0].length 它显示 undefined
谁能纠正我的错误在哪里,我一直在努力解决这个问题,但无法让它发挥作用。任何帮助表示赞赏。谢谢。
<?php
// PHP array
$myArray = array();
$myArray[] = array("id" => 1, "data" => 45);
$myArray[] = array("id" => 3, "data" => 54);
$myArray[] = array("id" => 2, "data" => 69);
$json = json_encode($myArray);
echo $json;
?>
<script type='text/javascript'>
// pass PHP array to JavaScript
var books = <?php echo json_encode($myArray, JSON_PRETTY_PRINT) ?>;
// how to access
for (var i=0;i<books.length;i++){
for (var j=0;j<Object.keys(books[i]).length;j++){
document.write("In Loop: "+books[i][j]);
}
}
console.log("Books length: "+books.length+"\n");
console.log("Books[0] length: "+books[0].length+"\n");
console.log("Out Loop: "+books[0]["id"]+"\n");
console.log("Out Loop: "+books[0]["data"]+"\n");
console.log("Out Loop: "+books[1]["id"]+"\n");
console.log("Out Loop: "+books[1]["data"]+"\n");
console.log("Out Loop: "+books[2]["id"]+"\n");
console.log("Out Loop: "+books[2]["data"]+"\n");
</script>
【问题讨论】:
-
JS 对象没有长度属性。使用它来获取对象的长度:
Object.keys(books[0]).length -
嗨 Josan,感谢您的回复,我虽然工作正常,但大小和值再次打印为“未定义”
标签: javascript php arrays json multidimensional-array