这个问题应该很容易解决,但是经过反复的尝试和大量的谷歌搜索,我没有答案。我正在尝试创建一个简单的循环,它将显示来自JSON变量的值。
<p id="demo"></p>
<?php echo ($_SESSION['amort_JSON']);
?>
<script>
var obj, i, j, x = 0;
var obj = JSON.parse(<?php echo json_encode($_SESSION['amort_JSON']) ?>);
for (i in obj.interest_paid) {
x += obj[i].interest_paid;
}
//document.write(obj[8].interest_paid);
document.getElementById("demo").innerHTML = x;
</script>
$_session['anirt_JSON']返回以下值
[{
"periodic_pmt": "2",
"principle_balance": 416997.37661705,
"principle_paid": 0,
"ttl_principle_paid": 1002.6233829502,
"interest_paid": 0,
"ttl_interest_paid": 866.83015878773
}, {
"periodic_pmt": 3,
"principle_balance": 416600.29804453,
"principle_paid": 538.02630958206,
"ttl_principle_paid": 1540.6496925323,
"interest_paid": 396.7004612869,
"ttl_interest_paid": 1263.5306200746
}, {
"periodic_pmt": 4,
"principle_balance": 416203.59758324,
"principle_paid": 538.40406076641,
"ttl_principle_paid": 2079.0537532987,
"interest_paid": 396.32271010256,
"ttl_interest_paid": 1659.8533301772
}]谢谢你的帮助。学习很有趣。
发布于 2017-04-19 02:55:06
为了通过obj数组的索引i (使用obj[i])访问其数组中的每个项,您需要遍历数组的所有可能的索引值:0通过obj.length - 1。
for (var i = 0; i < obj.length; i++) {这将指示JavaScript解释器:
0开始,obj.length之前停止(即在obj.length - 1结束),以及1递增。发布于 2017-04-19 03:17:26
由于obj是JSON对象的数组,所以可以使用forEach循环访问每个元素。
var obj = [{"periodic_pmt":"2","principle_balance":416997.37661705,"principle_paid":0,"ttl_principle_paid":1002.6233829502,"interest_paid":0,"ttl_interest_paid":866.83015878773},{"periodic_pmt":3,"principle_balance":416600.29804453,"principle_paid":538.02630958206,"ttl_principle_paid":1540.6496925323,"interest_paid":396.7004612869,"ttl_interest_paid":1263.5306200746}],
x=0;
obj.forEach(function (element, index) {
x += element.interest_paid;
});
console.log(x);
发布于 2017-04-19 03:28:09
你的代码应该是
for (i in obj) {
x += obj[i].interest_paid;
}obj是被解析的json数组,您应该遍历它。obj.interest_paid不存在,因为obj是一个对象数组。
这是一个演示
编辑:
正如@nnnnnn建议的那样,字符串周围应该有引号。
JSON.parse('<?php echo json_encode($_SESSION['amort_JSON']) ?>');https://stackoverflow.com/questions/43485350
复制相似问题