Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单JSON数组不工作_Javascript_Php_Json - Fatal编程技术网

Javascript 简单JSON数组不工作

Javascript 简单JSON数组不工作,javascript,php,json,Javascript,Php,Json,这个问题应该很容易解决,但通过反复试验和谷歌搜索,我没有答案。我试图创建一个简单的循环,以显示JSON变量中的值 var obj,i,j,x=0; var obj=JSON.parse(); 用于(我在对象中支付的利息){ x+=obj[i]。支付的利息; } //文件。编写(obj[8]。支付利息); document.getElementById(“demo”).innerHTML=x; 为了通过索引i访问obj数组中的每个项目(使用obj[i]),您需要迭代数组的所有可能索引值:0到o

这个问题应该很容易解决,但通过反复试验和谷歌搜索,我没有答案。我试图创建一个简单的循环,以显示JSON变量中的值

var obj,i,j,x=0; var obj=JSON.parse(); 用于(我在对象中支付的利息){ x+=obj[i]。支付的利息; } //文件。编写(obj[8]。支付利息); document.getElementById(“demo”).innerHTML=x;
为了通过索引
i
访问
obj
数组中的每个项目(使用
obj[i]
),您需要迭代数组的所有可能索引值:
0
obj.length-1

for(变量i=0;i
这将指示JavaScript解释器:

  • 要从
    0
    开始
  • 在到达
    obj.length
    之前停止(即在
    obj.length-1
    处结束),以及
  • 每次递增
    1

  • 由于obj是一个JSON对象数组,因此可以使用forEach循环访问每个元素

    var obj=[{“定期支付”:2,“原则余额”:416997.37661705,“原则支付”:0,“ttl原则支付”:1002.6233829502,“利息支付”:0,“ttl原则支付”:866.8301587773},{“定期支付”:3,“原则余额”:416600.29804453,“原则支付”:538.0263095206,“ttl原则支付”:1540.6496925323,“利息支付”:128396.7004669,“已支付利息”:1263.5306200746},
    x=0;
    对象forEach(函数(元素、索引){
    x+=支付的利息;
    });
    console.log(x);
    您的代码应该是

    for (i in obj) {
        x += obj[i].interest_paid;
    }
    
    obj
    是解析后的json数组,您应该在其中循环。
    obj.interest\u paid
    不存在,因为
    obj
    是一个对象数组

    这是一个

    编辑:

    正如@nnnnnn建议的那样,字符串周围应该有引号

    JSON.parse('<?php echo json_encode($_SESSION['amort_JSON']) ?>');
    
    JSON.parse(“”);
    
    您正在分析不正确的
    JSON
    对象。它应该是
    for(obj中的var i){…}
    而不是
    for(obj中的var i.已支付利息){…}

    工作演示

    var jsonObj=[{
    “定期付款”:“2”,
    “平衡原则”:416997.37661705,
    “支付原则”:0,
    “ttl原则”:1002.6233829502,
    “已支付利息”:0,
    “已支付利息”:866.830158773
    }, {
    “定期维护”:3,
    “平衡原则”:416600.29804453,
    “支付原则”:538.02630958206,
    “ttl_原则支付”:1540.6496925323,
    “已付利息”:396.7004612869,
    “已支付利息”:1263.5306200746
    }, {
    “定期维护”:4,
    “平衡原则”:416203.59758324,
    “支付原则”:538.40406076641,
    “ttl_原则支付”:2079.0537532987,
    “已支付利息”:396.322710256,
    “已支付利息”:1659.8533301772
    }];
    var x=0;
    for(jsonObj中的变量i){
    x+=jsonObj[i]。已支付利息;
    }
    
    console.log(x)
    没有数组,这是无效的JSONMine用JavaScript提供解析后的值,而不是显示PHP中的
    echo
    ?假设你有一个数组返回了
    obj的值。利息支付
    就不存在了。我对学习所有这些伟大的东西非常陌生。blow脚本返回正确的值。document.getElementById(“demo”).innerHTML=obj[0]。principle_balance+“
    ”+obj[3]。principle_paid;
    for(i in obj.interest_paid)
    应该是(i in obj)
    您可以循环对象。还请注意,
    obj.interest_paid
    中的未定义。从
    JSON.parse()中删除
    JSON.parse()
    json_encode()
    的输出应该已经是有效的JS,但是如果您想将其视为json并对其进行解析,则需要在其周围加上引号作为
    json.parse(“”)