php多维数组到javascript不能通过循环访问

php多维数组到javascript不能通过循环访问,javascript,php,arrays,json,multidimensional-array,Javascript,Php,Arrays,Json,Multidimensional Array,我试图将一个多维数组从php(在真实场景中动态插入的值)传递到javascript,然后这些值在javascript中使用,当我尝试使用循环打印相同的值时,当我检查数组[0]时,这些值不会被打印。长度显示为未定义 与静态索引一起使用时打印的值。 供参考的PFB图像- 谁能帮我纠正一下我的错误在哪里,我一直在努力想办法解决这个问题,但一直没能让它发挥作用。感谢您的帮助。谢谢 <?php // PHP array $myArray = array(); $myArray[] = array(

我试图将一个多维数组从php(在真实场景中动态插入的值)传递到javascript,然后这些值在javascript中使用,当我尝试使用循环打印相同的值时,当我检查数组[0]时,这些值不会被打印。长度显示为未定义

与静态索引一起使用时打印的值。 供参考的PFB图像-

谁能帮我纠正一下我的错误在哪里,我一直在努力想办法解决这个问题,但一直没能让它发挥作用。感谢您的帮助。谢谢

<?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>

//将PHP数组传递给JavaScript
var books=;
//如何访问

for(var i=0;i在您的示例中,
books[i]
是一个对象。它具有属性
id
data

但是循环中的
j
是一个整数,因此示例
books[0][0]
是未定义的,因为对象没有名为
“0”
的属性

如果要循环每个
books[i]
对象的属性,可以使用一个简单的
for in
循环:

var书籍=[
{id:1,data:45},
{id:3,数据:54},
{id:2,数据:69}
];
//如何访问

for(var i=0;i在您的示例中,
books[i]
是一个对象。它具有属性
id
data

但是循环中的
j
是一个整数,因此示例
books[0][0]
是未定义的,因为对象没有名为
“0”
的属性

如果要循环每个
books[i]
对象的属性,可以使用一个简单的
for in
循环:

var书籍=[
{id:1,data:45},
{id:3,数据:54},
{id:2,数据:69}
];
//如何访问

for(var i=0;iJS对象没有长度属性。使用此属性获取对象的长度:
object.keys(books[0])。length
Hey Josan,感谢您的回复,我认为它工作正常,但大小和值被打印为“未定义”againJS对象没有长度属性。使用此属性可以获取对象的长度:
object.keys(books[0])。length
Hey Josan,感谢您的回复,我认为它工作正常,但大小和值被打印为“未定义”againHi,如果我想在第一次迭代中使用1,45呢?我如何实现?可以使用
Object.values(books[I]).join(',')
生成类似
“1,45”
的字符串,并摆脱for/in循环强烈建议您忘记
文档。write()
甚至存在并使用dom插入方法。
document.write()
在现代javascriptYes@charlietfl中很少使用,这只是测试的粗略代码。实际上,在我最初的需求中,我会有两个变量,即“id”和“data”我将把它们作为参数发送给这个循环中的另一个函数,所以我想这样设置它们:
id=prop.value(id);data=prop.value(data);
可以这样做吗?可能吧,但我不明白……为什么你需要一个函数而不只是使用
id=book[i].id
?您好,如果我想在第一次迭代中使用1,45怎么办?如何实现?可以使用
Object.values(books[I])。join(',')
生成类似
“1,45”
的字符串并摆脱for/in循环强烈建议您忘记
文档。write()
甚至存在并使用dom插入方法。
document.write()
在现代javascriptYes@charlietfl中很少使用,这只是测试的粗略代码。实际上,在我最初的需求中,我会有两个变量,即“id”和“data”我将把它们作为参数发送给这个循环中的另一个函数,所以我想这样设置它们:
id=prop.value(id);data=prop.value(data);
可以这样做吗?可能吧,但我不明白……为什么你需要一个函数而不只是使用
id=book[i].id